Tag: Swift 4

Swift 4.2(Facebook应用)中的iOS应用中的选择性旋转UIViewController锁定

大多数初级开发人员都很难找到管理特定UIViewController方向的方法。 在本文中,我将通过协议扩展实现可重用协议。 让我们从AppDelegate.swift开始 不要用我的英语笑,英语不是我的母语。 感谢您的阅读。 资料来源: https : //gunnarhafdal.com/2017/01/selective-rotation-lock-in-ios-apps-with-swift.html

XCTest样本

在本教程中,您将尝试执行以下测试操作: 在视图控制器中测试方法。 检查视图是否存在。 在当前状态下捕获屏幕截图 如果您遇到以下任何问题,可以在此处下载完整的源代码项目。 1.在视图控制器中测试方法 首先,您需要阅读以下来自Apple的文章: XC测试 为Xcode项目创建并运行单元测试,性能测试和UI测试。 定义测试用例和测试方法 将测试用例和测试方法添加到测试目标,以确认您的代码行为符合预期。 了解测试方法的设置和拆卸 测试运行前准备初始状态,测试完成后执行清理。 addTeardownBlock(_ 🙂 注册一个拆卸代码块,以在当前测试方法结束后运行。 测试期望的异步操作 验证异步操作的行为符合预期。 使用2个选项创建一个新项目,其中包括“包括单元测试”和“包括UI测试”已选中: 要在视图控制器中测试方法,您需要对其进行初始化。 在这种情况下,我们将通过UIStoryboard对其进行初始化。 将以下代码片段添加到您的DemoTests.swift文件中: 现在,您可以调用视图控制器的方法: 按Cmd + U运行测试 2.检查视图的存在 首先,您需要阅读以下来自Apple的文章: 用户界面测试 当执行预期的操作时,请确保您应用的用户界面行为正确。 XCUIElementQuery 用于查找UI元素的查询。 XCUI元素 应用程序中的UI元素。 XCUI应用 可以启动和终止的应用程序的代理。 首先,要能够测试UI元素,您需要启动您的应用程序。 将以下代码片段添加到您的DemoUITests.swift文件中 现在,您可以使用app变量查询UI元素: 按Cmd + U运行测试 3.在当前状态下捕获屏幕截图 首先,您需要阅读以下来自Apple的文章: 将测试分为具有活动的子步骤 在测试方法中创建命名活动以简化测试报告。 为测试和活动添加附件 使用附件存储测试的输出数据以供以后分析。 XCUI画面 连接到设备的物理屏幕。 XCUI截屏 屏幕,应用程序或UI元素状态的捕获图像。 要捕获当前状态的屏幕快照,可以使用以下代码片段: 按Cmd + […]

在Swift 4.0中使用索引循环字符串字符

假设您要在for循环中使用索引值来打印字符串的每个字符,执行此操作的一种非常简单的方法是:- let name =“ nick” //我们要打印的字符串。//0 .. <将为0中的i给出从0到(string.length-1)的数字范围。.<name.count { //在Swift中不允许使用操作名[i],或者让索引= name.index [name.startIndex,offsetBy:i] print(name [index]) } 之所以不允许使用name [i],是因为每个字符需要不同的内存量来存储,因此为了确定哪个字符位于特定位置,您必须从每个String的开头开始读取,并向前移动(偏移)1。如代码所示: //从start-index开始并向前迭代1 让索引= name.index [name.startIndex,offsetBy:i]

如何通过运行时检查来加强代码?

在某些发生运行时类型检查的情况下,无法进行编译时类型检查。 就像从网络上读取数据(当时源代码不知道数据)一样,从用户那里获取输入不满足要求以及由于算术运算等导致的溢出问题。 Swift提供断言来意识到这些问题。 在深入研究Assertions之前,让我们看一下新引入的Swift编译模式和Swift优化级别。 调试构建:增量-Swift支持增量构建目标,即,在更改单个文件时,不重建目标中的每个Swift源文件。 依赖于已修改文件的每个文件都将被重建。 发布版本:整个模块-此选项一起优化目标中整个模块的所有文件,并提高性能。 它可以执行函数内联和函数专业化等优化。 Swift提供了四种不同的优化级别: -Onone :基本上用于常规开发,即调试版本。 它执行最少的优化,并保留所有调试信息。 建议始终在此模式下使用增量编译。 -O :这用于生产代码。 编译器执行了激进的优化,可以极大地改变发出代码的类型和数量。 调试信息将被发出,但是会造成损失。 -Ounchecked :这是一种特殊的优化模式,适用于愿意为性能而牺牲安全性的特定库或应用程序。 编译器将删除所有溢出检查以及一些隐式类型检查。 通常不打算使用此方法,因为它可能导致未检测到的内存安全问题和整数溢出。 仅当您仔细检查了代码对于整数溢出和类型强制转换是安全的后,才应使用它。 -Osize :这是一种特殊的优化模式,在该模式下,编译器将代码大小优先于性能。 此模式适用于整个模块以及单文件编译,而整个模块模式可提供最佳的优化结果。 注意:可以在项目的构建设置中设置优化级别和编译模式。 每当我们需要根据预期的条件检查代码时,就可以使用断言,并且将引发异常。 标准Swift库带有五个断言函数: 断言(_:_:file:line 🙂 assertionFailure(_:file:line 🙂 前提条件(_:_:file:line 🙂 preconditionFailure(_:file:line 🙂 fatalError(_:file:line 🙂 让我们详细研究每个功能: assert():此方法类似于传统的C样式断言,带有可选消息。 它仅应用于在测试过程中处于活动状态但不会影响运输代码性能的内部完整性检查。 如果condition评估为false ,则在打印message后以可调试状态停止程序执行。 示例:对于要入学的孩子,最低年龄要求为3岁,因此我们可以在此处检查此情况: 注意:“ **”优化器可能会假定从未调用此函数。 https://swift.org/blog/whole-module-optimizations/ https://swift.org/blog/osize/ https://developer.apple.com/documentation/swift/swift_standard_library/debugging_and_reflection 采用断言是一个好习惯。 您应该注意使用正确的功能进行适当的构建。 一个小错误可能会导致生产应用程序崩溃,从而影响最终用户。 感谢您的阅读,我们期待您的反馈。 您可以在以下位置找到我: Linkedin个人资料: […]

iOS — 00:Conhecendo或Xcode

Abra o Xcode e crie um novo projeto: 快速获得语言证明和语言证明: seguir selecione“ Single View App”和escolha odiretóriopara salvar o projeto: 将Aqui temos um“ mapa” com用作Xcode的基本原理: “无对象库” ,获取标签arraste-a para o centro do canvas: Vocêpode重新命名一层puxando suas bordas ou no Size Inspector : Aumente o tamanho da fonte no 属性检查器 : 显示助手编辑器 ,将视图控制器序列化为情节提要: 例如,控制,分类和视图控制器。 视图控制器的基本概念。 Dentro dafunçãoviewDidLoad () ,可用于以下方面: Atalhos做Xcode:

迅捷4视图Tasarımınıkod iledeğiştirme– Mehmet

Swift 4查看Tasarımınıkod iledeğiştirme tasarim(benyanlışlıklatasarımyazmışımdüzeltirsiniz)UIView bir可可接触类oluşturuyoruz。 达哈索拉main.staryboardiçineviewkoyacağızve tasarim.swiftbağlayacağız。 Şimditasarim.swiftdosyamızagelipkodlarımızıyazalım。 awekeFromNib() 导入 UIKit 类 Tasarim:UIView { 覆盖 func awakeFromNib(){layer.cornerRadius = 20layer.shadowColor = colorLiteral(红色:0.9372549057,绿色:0.3490196168,蓝色:0.1921568662,alpha:1)layer.shadowRadius = 10layer.shadowOpacity = 0.75backgroundColor = colorLiteral(红色:0.501960814,绿色:0.501960814,蓝色:0.501960814,alpha:1)}} Sonuçaşağıdadır。

可变的—通过Swift 4中的keyPath跟踪更改

我已经阅读了一些有关单向架构的文章。 有趣的是,您最想在状态更改时更新UI。 基本上,您将只观察状态更改,该更改将发送整个更改的状态,视图将在此状态下相应刷新。 问题在于,在UIKit中,我们没有虚拟DOM,它只能优化状态更改后需要刷新视图的部分中的视图刷新。 解决此问题的一种好方法是发送枚举,该枚举表示除了状态值本身之外状态上发生的更改。 但是我意识到,由于Swift 4中有keyPath,我们可以尝试使用它们来记录更改。 这就是我的意思,因此我编写了一个名为Changeable的小型框架,您可以在github上找到它。 Changeable框架是可容纳对象的任何类型的包装,并为您提供以下功能: 通过keyPath set属性更改 set方法不会立即应用更改 commit方法将应用由set添加的未决更改 reset方法将还原触发set’s所有未完成的更改 观察commit后set所做的更改 可以,但是如何运作,对吗? 我将只关注实现的某些部分。 您可以在github上深入研究细节。 首先,让我们关注Changeable泛型类。 最有趣的部分是set方法,该方法存储keyPath和闭包,这些闭包将在包装的值中应用更改,以后在commit方法中应用更改。 因为没有简单的方法来存储keyPath并将其连接到值,所以需要applier闭包,因为WritableKeyPath是一个通用类,不能轻易以任何顺序存储。 我可以使用AnyKeyPath但是再次必须将它们转换为WritableKeyPath因为只有这种keyPath可以用于更改属性。 幸运的是, AnyKeyPath以及WritableKeyPath都具有hashValue ,该值可以帮助我将特定的keyPath与应用程序的闭包关联起来。 值得一提的是, hashValue仅保证在程序的一次执行中有用。 但是因为我们不需要将其存储在存储中,所以很安全。 另外, Changeable类具有添加观察者的能力。 我将省略许多文章中描述的观察实现。 但是更有趣的部分是,要发出然后消费更改, Changeable使用Change结构来保存更改的值和更改的keyPath。 这是Change结构的整个实现: 没有太多要说的了。 我不向您解释代码,而是向您展示如何使用它: 结论 keyPath在Swift语言中打开了一个新的可能性世界,它为该语言带来了一点活力。 我希望您会发现Changeable是可以用来解决实际问题的工具。 让我知道你的想法。 这就是我为您准备的一切。 您会在操场上找到更多内容,并在github上进行测试。

Swift-什么是可选绑定? (?/!)🚨

大家好,😛,我们今天将在Swift中讨论“ 可选绑定 ”。 可选绑定是一个让人头疼的话题,但您可以! 我们将尽可能简单地描述所有内容,所以不要害怕😇 我们的主要符号是“?”,用于将变量定义为Optional 。 (这意味着可以为零 )让我解释一下, 我们已经将movieCount变量定义为Optional 。 如果需要检查moviesCount的值,则必须解开变量。 您可以通过其他方法来完成此操作,请允许我解释一下。 1 –强制展开 您可以使用“!”运算符解开Optional变量,但这是一种不太安全的包装方式,必须确保变量是否包含值。 如果未在正确的地方使用强制展开方法,则应用程序可能会崩溃。 👿 我的视图控制器上有一个按钮,该按钮已连接到IBOutlet 。 但是,如果我们断开它们的连接, 将会发生什么? 如果您尝试在初始化我们的隐式可包装可选变量之前进行某些突变。 您的应用程序可能崩溃了。 🤑 我认为一切都清楚了。 如果您有任何疑问或反馈,请尝试通过评论或Twitter与我联系:@ strawb3rryx7 感谢您的阅读,广为传播。 👏🏼

Neden iOS? Swift’enasılbaşladın? Başlamakistiyorum,nasılbir yol izlemeliyim?

Merhabaarkadaşlar,Bugünsizlereçokald olan “ Neden iOS?,Swift’enasılbaşladın?” sorularınıncevaplarınıvereceğim。 Bunundışındaçokönemliönerilervereceğim。 Öncelikleilk sorumuzdanbaşlayalım, Neden iOS应用商店? 请选择iPhonekullanıcısıyım和iOSsevdalısıyım。 iOS的iOS设备,Steve Jobs,iPhone 3GS,iPhone 4的iPhone,iPad和iPad 4都可以使用。 Demem o ki bente iOS’tenkopamadım,您好吗? 阿斯拉! ☕️ iOS 3到4编码senelik idi,dahaçokWeb ve桌面编程程序。 Sektöründengelerinin mobilekaymasısonucu iOSgeliştirmeyekarar verdim ama o zamanlar Objective-C var idi,(2014’ten bahsediyorum,WWDCöncesi)语法’ınıciddenbeğenmiyordum。 (哈拉beğenmiyorum。) 2014年WWDCyaklaştı。 苹果公司,WWDC’de Swift’i duyurdu。 苹果,Swift’eçokgüveniyorve yeni,güçlübirdilolmasınınyanısıraSwift’eçokciddi anlamda destekvereceğininsinyallerinide veriyordu。 Burasıböyle… Neden Swiftkullanmalısınız? 迅速在德国库尔登(Kolaylıklarından)的巴尔迪尔(BarkDiş)度假。 功能模式 关闭 […]

Swift-SnapKit ve Auto Layout nedir,还可以吗? 📏

Merhabaarkadaşlar,BugünküyazımdadahaçokSnapKit, Auto Layout nedir? nasılkullanılır? 🤔 Auto Layout’un SnapKit和Bunun gibikütüphanelerlene kadar kolay veyönetilebilirolduğunugöstereceğim。 自动版面奈迪尔? 自动布局,iOS或OS X,请查看nesnesindentüretilmiştümobjelerin otomatik图片 Auto LayoutiçinApple’ındesteğiy mu吗? ElbettedesteğivaryalnızSnapKit gibi birkütüphaneile hem hem dahakısakod kullanarak,hemde Auto Layout手工制作布局。 Apple’ındökümantasyonlarındakendi自动布局API’ınadairdetaylarıgörebilirsinizzatenbaktığınızdaSnapKit gibi birkütüphaneninkesinlikle bir velinimetolduğunufarkedersiniz。 Apple AutoLayoutdökümantasyonu:自动布局指南-以编程方式 Aynızamanda Auto Layout故事情节提要kullanarakuygulamanızıgeliştiriyorsanız接口生成器üzerindende yapabilirsiniz。 本以编程方式 olarak UI nesnelerinioluşturduğunuzuvarsayarak SnapKit’ianlatacağım。 自动布局 大小(宽度,高度), 点(X,Y),以及尺寸。 Korkmayın,Matematikanlatmayacağım。 😃Demem o ki X’in yataydüzlemde,Y’in dikeydüzlemdeolduğunubiliyorsanız,güvendesiniz。 […]