Tag: Swift 4

移动开发:2018年2月iOS上的5大热门文章

这是我第一次决定建立在Mobile Development Digest中发布的热门资源列表。 如果您愿意的话,将来我会继续在iOS和Android领域中名列前五名。 该列表已通过阅读2018年2月发布的《移动开发摘要》问题的统计数据进行合并。 从2017年的Swift顶级文章中学习iOS编程。这是很多不错的文章,它们可能会帮助您总体上掌握Swift和iOS开发。 为什么我要在一周内自己的顶级文章摘要中放入另一个顶级文章列表? 好吧……MDD结合了我认为很有价值的文章,但由于我目前的项目和知识水平,我选择它们。 但是,MDD的目标是提供完整且尽可能广泛的工具,框架和文章集。 万一Mybridge写了一篇文章,很难否认他们做得很好,而且结果可能对所有iOS开发人员都有用。 Moya入门。 Moya是一个Swift网络抽象库。 如果仅处理一个项目或已经具有抽象级别,则可能不需要使用它,但不要忽略源代码。 Moya经常使用“敏捷”方法,您可能会从其代码中学到很多东西。 用compactMap替换flatMap。 一些Swift解释了即将发布的Swift 4.1和XCode 9.3对flatMap的更改 自上而下的iOS错误架构。 还有一种尝试发现iOS上的错误处理主题。 此方法类似于触摸处理事件,但用于错误。 更好的初始化程序和默认参数。 Swift的另一部分显示了强大的键路径以及更好的对象初始化方法。 最初发表于ALSEDI

从NSCoding迁移到Codable

对于迟到的用户:Apple 在Swift 4中 引入了 Codable 协议,该协议使您可以将模型类型编码和解码为JSON和属性列表等数据类型,并且可以用来代替 NSCoding 协议来存档数据。 首先,此Codable协议有什么Codable ? 当我们已经有了NSCoding时,学习一种新方法真的值得付出努力吗,这种NSCoding多年来一直可以很好地归档数据? 而且,如果您查看同时实现这两种类型的类型,则它们非常相似。 假设我们有一个Product类型,其中包含标题,价格和数量: 所以-如果它们是如此相似,何必呢? 好吧,有几个很好的理由: 您可能已经注意到, Codable示例中的Product类型是结构而不是类-不必一定是,这只是因为实现Codable协议的类型不需要子类化(提醒NSCoding类型必须是NSObject子类,因此必须是一个类),它们可以自由地为任何类型-类,结构甚至枚举。 动力! 尽管在本文中我主要关注归档到磁盘,但是Codable协议不仅对归档有用,而且对将数据编码或解码为不同的数据类型也很有用。 在撰写本文时,其中包括JSON和属性列表。 如果您只想编码或解码(例如,您可能只是从远程API接收和解码数据),则可以简单地采用Encodable或Decodable协议。 Codable任何具有Codable经验的Codable都可能会在屏幕上大喊大叫! 因此……可Codable协议的Codable在于它具有自动生成其所需方法(编码和初始化)和CodingKeys枚举的能力。 如果您对类型中的Codable属性进行了简单的编码/解码, Codable可以将其省略,并允许编译器自动生成它们,哇! 自动生成很棒,但是在某些情况下,您将需要放弃自动生成的便利,而手动组合其中的一个或全部。 例如: 类型的一个或多个属性可能不是Codable 。 在这种情况下,您需要将其与Codable类型相互转换。 类型的结构可能与您要编码/解码的结构不同。 您可能需要编码和解码不同于类型属性的属性。 您可能要对类型的属性使用不同的名称。 我们已经看到了如何定义模型类型进行比较,但是实际数据归档如何进行比较? 这是使用NSCoding归档和取消归档Product类的数据: 这是由于两个因素: 编码和解码可能会在Codable协议中引发错误。 这是一件好事–这意味着您的应用在使用Codable协议进行编码和解码时不太可能崩溃。 在将数据类型传递到存档之前,您需要手动请求使用自定义编码器对数据类型进行编码。 (对于解码和取消存档也可以相反。) 因此,您可以看到实现Codable协议与NSCoding协议Codable具有其优势。 问题是–我们该如何处理使用NSCoding旧项目? 好吧,当然,我们无能为力。 Apple尚未宣布他们不赞成使用NSCoding ,因此您应该继续使用它。 但是,如果您希望将代码更新为更现代的Codable协议,该如何……? 如果仅将NSCoding类型切换为Codable类型,然后在具有预先存在的NSCoding数据的设备上运行该应用程序,则该应用程序尝试将其归档为Codable数据时,不仅会失败 ,还会因Codable而崩溃 。 对于您的忠实用户而言,这是一场灾难! 一种解决方案是同时采用Codable和NSCoding协议。 旧用户第一次使用该应用程序时,将使用NSCoding协议检索数据。 他们随后保存数据的任何时间,他们都将使用Codable协议进行保存,并且此后将仅通过Codable协议访问其数据。 在不远的将来,您可以决定不再支持使用NSCoding存储的数据。 同时采用NSCoding和Codable协议非常简单。 […]

关于Swift中的cool reduce方法的一些知识

在本文中,我将尝试解释reduce方法的基本知识及其在Swift中的工作方式。 与映射和过滤器相比,这种方法对我来说有点难理解。 当我第一次看到还原方法时,我的反应是 但是在阅读了W3Schools的代码和文档之后,我开始对它有所了解。 我花了一些时间来适应这种反应性功能类型的事物,但是最终,我开始了解基础知识。 顺便说一句,我第一次看到它是在JavaScript中 最近,我注意到有些人也很难理解reduce()方法的工作方式。 这就是我决定撰写本文的原因。 所以……开始吧 从Apple Docs: 返回使用给定的闭包组合序列元素的结果。 简而言之,这意味着您可以将序列的所有元素组合为任何类型的单个值。 多么酷啊? 真的很帅,真的很帅。 那么,下一个问题是我可以用它做什么很棒的事情? 让我们看一些例子 我们来看一些实际的用例,假设您收到一个任务,其中有一个数字数组,并且必须在应用程序屏幕中显示所有用逗号分隔的数字。 你是怎样做的? 香草……循环方式 以上就是我的第一篇文章,希望您喜欢🙂 如果我有任何问题,请告诉我。 我很高兴收到您的反馈really 您可以在Twitter上@ LucianoPassos11找到我。 最后但并非最不重要的一点,感谢@ nobrejonathan23和@PedroFabrino,他们帮助审查了此🙂

SWIFT 4,审查新

2017年9月19日,Apple在Swift语言的官方博客上宣布了(链接为外部)Swift 4.0版本。 好消息是,新的Swift不像Swift 3.0那样包含许多史诗般的更改,并且大多数更改具有完全的向后兼容性。 因此,您可以放松休息一下,让我们快速浏览所有创新。 1.单边范围 添加了RangeExpression协议以简化使用范围的方法的创建。 此外,标准库还可以从现在开始检测范围的开始和结束索引,因此您无需显式指定它们[SE-0172] 阅读全文: Swift 4,回顾新| Sigma软件 2017年9月19日,Apple在Swift语言的官方博客上宣布了Swift 4.0的发布。 好消息是…… sigma。软件

iOS Mobil UygulamaGeliştirmeyeBaşlamak

2018年新市场- 美孚 UygulamaGeliştirmeyeBaşlamakeğitimini-sunumunuburaya aktarmaya karar verdim。 iOS版本,您可以在iOS上下载。 Başlayamamasebebleri hepsinin birbirindenfarklıolmasırağmen,ortaknoktalarıbu konudagerçekvedoğrubilgieksikliği。 Bu hikayenin ana konusuda bana ençoksorulan sorulardanderlediğimsunumu anlatmayaçalışacağım。 Teknolojiningelişiminianlatantümyazılarda; “儿子25yıldakigelişim,bundanönceki3asırdakigelişimdendahafazladır。” busözalıntılanır。 Sonuna kadarkatılıyorum。 Fakat busözümobil uygulamageliştirmetarihinebaktığımızdabiraz revizyon etmemiz gerekiyor。 O zaman buyrun; “ 10yıldakigelişim,geçtiğimizbirasırdakigelişimdendaha fazla。” Busözükanıtlamakiçinaşağıdakitarihlerebakalımmı? 1-)机动UYGULAMAGELİŞTİRMETARİHİ 1973年ylkilnda的ilk cep telefonunun mucidi olan Martin Cooper GSM teknolojisininönünüaçmıştır。 Türkiye’de1994yılındaise ilk cep telefongörüşmesiyapıldı。(20 yson Sonra) 1992年,类似的短信发送给了我。 Türkiye’de1995yılındailk […]

精通CoreData(第1部分介绍)

核心数据是用于管理应用程序中的模型层对象的框架。 它为与对象生命周期(运行时)和对象图管理(包括持久性)相关的常见任务提供了通用的自动化解决方案。 模型层对象 : 模型或数据层具有表示应用程序或视图所需数据的状态(过去或现在)和组织的对象。 登录按钮应启用还是禁用取决于模型或数据层状态。 这些东西将由模型层维护。 模型层中的常见任务: 创建模型 破坏模型 追踪 撤消和重做 对象之间的数据一致性。 延迟加载对象 自动验证属性值 架构迁移工具可简化架构更改并允许您执行有效的就地架构迁移 坚持不懈 快取 复杂的查询编译 版本跟踪和乐观锁定可支持自动多写程序冲突解决 注意:这些功能受Core Data支持。 在本系列中,我们将通过示例详细介绍这些功能。

通过Cocoapods分发Swift框架

出色的软件也具有出色的安装经验。 如果该软件太难安装,将很少使用它。 在我以前的文章中,我们学习了如何使用Swift框架重用和共享代码。 我们创建了一个包含框架目标的项目,该目标包含一个登录屏幕。 然后,我们在Xcode工作区中添加了框架和应用程序项目。 最后,我们通过工作空间将框架链接到应用程序并使用了该框架。 我们有责任获取并链接框架项目。 我们甚至没有办法管理框架的不同版本。 因此框架的安装和管理经验不是很好。 有没有更简单的方法来管理和安装框架? 🤔 就在这里! 🎉Cocoapods是一种流行的工具,可简化Swift框架的安装和共享。 在本文中,我们将逐步介绍通过Cocoapods共享Swift框架的过程。 稍后,我们将在应用程序中使用它。 我们将在Cocoapods将访问的git存储库中托管我们的框架。 在本文中,我假设您熟悉git 。 创建框架也不在本文讨论范围之内。 要查看如何创建框架,请查看我以前的文章。 将提供一个框架项目。 最后,我们只会谈论Cocoapods对于Swift框架可以做什么。 在开始之前,让我们快速了解Cocoapods的工作方式。 它将帮助我们与之合作。 本指南使用Xcode 10.1和Swift 4.2。 Cocoapods如何运作? 在本节中,我们将从两个不同角度简单地概述可可豆的工作方式。 将框架安装到iOS应用程序项目 向Cocoapods发布框架。 如果您已经熟悉Cocoapods的工作原理,请随时跳过任何或所有部分。 1.将框架安装到iOS应用程序项目 让我们开始看当Cocoapods如何工作的简化概述,当我们要求该工具将名为FrameworkA的Swift框架安装到名为MyApp的 iOS应用程序项目中时。 我们告诉Cocoapods,我们要在项目目录根目录下名为Podfile的文件中的MyApp target中安装FrameworkA 。 按照我们的示例, Podfile看起来应类似于以下内容: 以“ MyApp”为目标 吊舱“ FrameworkA” 结束 在上面的示例中,我们告诉Cocoapods我们的项目有一个名为MyApp的目标。 我们还告诉Cocoapods, MyApp目标需要一个名为FrameworkA的框架 ,该框架通过Cocoapods共享。 Cocoapods中的共享框架称为pod 。 捕获项目目标及其要求之后,我们必须告诉Cocoapods根据项目规范来建立我们的项目。 为此,我们必须运行pod install 。 […]

客场进球计算器

学习Swift 4和XCode和My First Solo iOS应用 我一直在关注伦敦App Brewery的Udemy iOS课程,到目前为止,我对此感到非常满意。 我已经了解了Swift 4的基础知识以及XCode 10的工作原理,但是离被雇用还有很长的路要走。 我所做的就是创建我的第一个iOS应用程序的起点。 它被称为“客场进球计算器”,它是一个简单的应用程序,可以在考虑客场进球规则的基础上,根据球队在两场比赛中的得分来计算球队是获胜,平局还是输局。 客队进球规则是一种方法,当球队在对方球队的主场进行两次比赛时,他们打破联盟足球和其他体育比赛的联系。 根据客场进球规则,如果进球数相等,则在“客场”得分更高的球队将获胜。 这是我之前亲自搜索过的一个应用程序,但未成功找到,因此我认为确定该应用程序并不难。 我开始在XCode Playgrounds中建立要使用的正确算法。 在测试了一个小时的不同算法之后,我制作了一个切实可行的算法。 下一步,将其放入XCode并设计应用程序以解决该问题。 这个阶段花费的时间比预期的要长得多,因为我是一个本质上的设计师,所有东西都必须完美地放置和着色。 这个应用程序经过了三种不同的设计,直到我确定了最终版本。 我知道,实际上,此版本的应用程序永远不会在App Store中出现。 它制作效率低下,并且有一些我不知道如何解决的愚蠢错误,而且我还没有了解约束和自动布局,因此仅在iPhone X或iPhone XS上看起来不错。 虽然这个程序是我的第一个独立构建的应用程序。 到目前为止,我只制作了属于教程或Udemy课程一部分的应用程序,从头到尾都牵着我的手。 从头到尾,Aways Goals Calculator是我自己的,代表了我学习的一个里程碑,随着我学到更多,它将逐渐发展成为最终产品。

Swift 4 Introduction系列1.3 — Swift基本数据类型

Swift鼓励程序员使用4种基本数据类型。 它们是String,Int,Double和Bool 。 字符串用于文本,整数用于整数, 双 精度型用于浮点数, 布尔型用于存储布尔值(真或假)。 除了4种基本数据类型外,我们还可以使用UInt表示的无符号整数和Float表示的较小浮点数 。 对于有符号和无符号整数,都可以将它们分解为位大小的整数。 一个八位带符号整数由Int8表示。 对于有符号整数,我们有Int8 , Int16 , Int32和Int64 。 同样,对于无符号整数,我们也有UInt8 , UInt16 , UInt32和UInt64 。 整数,浮点数和布尔值的实现与许多其他C类编程语言(例如C,C#或Objective-C)非常相似。 使用不同的编程语言,String的实现将有所不同。 在本文中,我们将介绍String的基础知识。 在本文中,我们还将介绍与其他编程语言不太相同的新数据类型。 元组是包含一组值的数据类型。 可以使用其他基本数据类型的组合来构造这些值。 我们可以将多个值组合成一个元组,并像处理单个变量一样传递多个值。 (提示:对于C编程,元组类似于struct)。 Swift还引入了一种称为Optionals数据类型的数据类型。 可选变量处理变量中没有值的情况。 它类似于Objective-C中的nil指针,但可选选项适用于所有Swift数据类型。 可选参数比Objective-C中的nil指针安全。 通过使用if语句和可选变量,Swift引入了一种称为可选绑定的编程技术,该技术可对所有变量进行安全检查。 可选绑定是Swift编程的关键功能之一。 整数 在Swift中, 整数是整数 。 整数数据类型仅接受整数。 例如,整数接受数字,例如54或57791。 整数可以进一步分为有符号整数和无符号整数 。 有符号整数接受负整数和正整数。 有符号整数的示例是57,-325和-54623。 无符号整数仅接受正整数,例如723和9394。 有符号整数用Int表示,无符号整数用UInt表示。 另外,Swift还提供位大小的整数。 UInt8表示大小为8位的无符号整数。 Swift提供了4个无符号位整数,它们是UInt8 , UInt16 , […]

Swift 4.2的新功能

苹果已经发布了Swift 4.2,这似乎是明年推出Swift 5的第一步。 现在,我们将看到Swift 4.2中的一些改进,这些改进可能会在我们的项目中派上用场。 随机数: 在Swift 4.2之前: 让randomNumber = arc4random_uniform(50) 上面的代码生成UInt32类型的1到50的随机数。 在Swift 4.2中: 让randomNumber = Int.random(in:1 .. <50) 上面的代码在这里生成1到50之间的Int类型的数字。 上面的方法适用于类似的数据类型,例如Float,Double,CGFloat等。如果要生成随机布尔值,则可以使用Bool.random()轻松完成。 上面的另一个补充是我们还可以从像 让汽车= [“福特”,“丰田”,“大众”,“奔驰”] print(cars.randomElement())//从上面的cars数组中打印任何一个。 改组: 改组属性可能会在您像纸牌游戏那样在某处随机生成排列的地方派上用场。 var卡= [“杰克”,“国王”,“女王”] cards.shuffle()//将对数组元素进行重新排序 或let cards = cards.shuffled()//将重新排序的数组分配回cards变量 序列命名的改进: 在Swift 4.2之前: let array = [“苹果”,“芒果”,“橙色”] 如果让appleFruit = array.index(其中:{$ 0 ==“苹果”)}),{ 打印(“发现苹果”) }其他{ 打印(“找不到苹果”) } 上面的代码获取数组中第一个元素的索引,该索引等于“ apple” 快速4.2 如果让firstFruit = […]