Swift3.0

Swift3.0发布过程

别等时光非礼了梦想. 提交于 2020-03-14 08:18:02
本文翻译自官网Blog: https://swift.org/blog/swift-3-0-release-process/ 本文将阐述Swift 3.0的目标,发布过程以及预估进度. Swift 3.0是一个与Swift 2.2源码 不兼容 的主发行版. 这个版本在语言和标准库上做出了根本性地改变. 对于Swift 3.0中所有实现变化的完整列表可在 Swift evolution site 查阅. Swift 3.0同样也是第一个包含 Swift包管理器 的发行版. 尽管Swift包管理器尚处于开发早期,但其已支持对Swift包跨平台的开发和部署. Swift包管理器将同时支持Darwin及Linux. 对于Linux, Swift 3也会是第一个包含 Swift核心库 的发行版. Swift 3.0预计会在16年下半年的某个时候发布. 除了在Swift.org发布, Swift 3.0也将集成在后续Xcode版本中推出. 开发者预览版 Swift 3.0会有一系列的开发者预览版本 (例如“seeds”或者“betas”) 以期能提供合格的Swift 3构建版本. 这样做是为了提供给用户更稳定合格的可 下载 试用(并提交Bug)的Swift库, 而不仅是抓取 master 分支的最新快照. 各个开发者预览版之间的间隔很可能不一致, 大致上是每隔4-6个礼拜. 这会被要并入

Swift3.0 闭包(blcok)的全面介绍及使用

时光毁灭记忆、已成空白 提交于 2019-12-04 13:22:05
闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。 Swift 会为你管理在捕获过程中涉及到的所有内存操作。 闭包表达式语法有如下的一般形式: { (parameters) -> returnType in statements } 这里的参数(parameters),可以是in-out(输入输出参数),但不能设定默认值。如果是可变参数,必须放在最后一位,不然编译器报错。元组也可以作为参数或者返回值。 闭包的函数体部分由关键字in引入。该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始 例如: let sum:(Int , Int) -> Int = {(a : Int ,b : Int) -> Int in return a + b } print(sum(3,4)) 由于可以推断出闭包的参数和返回值类型,所以闭包表达式可以表达为: let sum:( Int , Int ) -> Int = { a , b in return a + b } 单表达式闭包隐式返回 单行表达式闭包可以通过省略 return 关键字来隐式返回单行表达式的结果,如上版本的例子可以改写为

Swift 2.3-> 3.0

主宰稳场 提交于 2019-12-03 10:21:08
是否从Swift2.3升级到3.0呢? 如果你有一个意义非常重大的Swift编码库(就像我们在 VTS 中做的一样),那么别犹豫了,赶快更新吧。另外为了项目的需要,Xcode的更新,跟随苹果的步伐,最新的技术,还是麻溜的跟上把。 但是如果你的Swift代码不是非常的繁重,那么你就直接忽略2.3吧。 下面有一些事情需要记住: 1.依赖库非常重要,确保你的依赖库支持2.3还是3.0-大多数的lib/framework是两者都支持的( Alamofire , Charts ).然而升级到3.0是你的唯一途径。新的发展将会在Swift3.0展开。所有的swift2.3版本的相关依赖库将会被冻结,也就是不在更新。 2.Xcode8.x 将会移除对Swift2.3的支持。Swift2.3注定是大型工程的一个过渡品。所以我们需要努力的升级到swift3.0 3.如果你有一个私有的CocoaPods用于分享代码在多个工程中,那么你不得不马上更新。 当然你可以只更新到2.3,但是你只能推迟,因为在发布Xcode9之前你必须移植到Swift3。 将问题从Swift2.2迁移到2.3 这个迁移可能将Range<T>到CountableRange<T>.但是 CountableRange <T>只存在于Swift3 迁移者将会添加评论 /* 迁移者 修复:使用变量类型为:

Swift3.0带来的变化汇总系列三——函数和闭包写法上的微调

拈花ヽ惹草 提交于 2019-12-03 09:34:22
Swift3.0带来的变化汇总系列三——函数写法上的微调 一、函数方面 Swift3.0相比Swift2.2的版本在API上做了大量的修改,代码风格也更加统一。在函数方面,Swift3.0中做的最大修改是修改了内部名称与外部名称的默认规则。 在Swift2.2中,函数参数列表的第一个参数如果开发者不手动设置外部名称,默认是匿名的,除第一个参数以外的其他参数,开发者如果不设置外部名称,默认外部名称是和内部名称相同的,因此在调用函数时,代码常常是这样的: //多参数函数Swift2.2中 第一个参数默认匿名,其他参数默认内部命名与外部命名相同 func myFunc5(param1: Int,param2: Int,param3: Int) { //这里使用的param1,param2,param3是参数的内部命名 param1+param2+param3 } //调用函数的参数列表中使用的param2和param3为外部命名 myFunc5(1, param2: 2, param3: 3) Swift3.0中将这一规则修改为:如果开发者不设置函数中参数的外部名称,则全部参数都默认外部名称和内部名称相同,上面相同的代码,在Swift3.0的环境下是下面这样的: //多参数函数 默认内部命名与外部命名相同 func myFunc5(param1: Int,param2: Int

Swift3.0带来的变化汇总系列二——集合类型中的变化

若如初见. 提交于 2019-12-03 09:34:03
Swift3.0带来的变化汇总系列二——集合类型中的变化 与字符串类似,Swift中集合的类型在3.0版本中也做了大量API上面的修改。 一、Array数组的更改 array数组中修改的API示例如下: //创建大量相同元素的数组 //创建有10个String类型元素的数组,并且每个元素都为字符串"Hello" //swift2.2 //var array3 = [String](count: 10, repeatedValue: "Hello") //swift3.0 var array3 = [String](repeating: "Hello", count: 10) //创建有10个Int类型元素的数组,且每个元素都为1 //swift2.2 //var array4 = Array(count: 10, repeatedValue: 1) //swift3.0 var array4 = Array(repeating: 1, count: 10) var array = [1,2,3,4,5,6,7,8,9] //向数组中追加一组元素 //swift2.2 //array.appendContentsOf([11,12,13]) //swift3.0 array.append(contentsOf: [11,12,13]) //向数组中的某个位置插入一个元素 /

Swift3.0带来的变化汇总系列一——字符串与基本运算符中的变化

穿精又带淫゛_ 提交于 2019-12-02 02:32:24
Swift3.0带来的变化汇总系列一——字符串与基本运算符中的变化 一、引言 Apple与今年6月13日正式发布了Swift3.0的第一个预览版本,并且相应推出了Xcode8的第一个bate版本。开发者已经可以在Xcode8bate版上来体验Swift3.0的新特性。首先,Swift3.0确实带来了很大改变,许多Swift中的结构体API都进行了更新,例如String,Array等,Swift3.0版本将许多类Objective-C风格的API都更换成了Swift风格的,其目的使开发者可以使用Swift更加惬意有趣的编程。本系列博客,是我观看WWDC视频中介绍的内容以及Swift3.0的开发者帮助文档整理总结而来,在期间,我也参考对比了Swift2.2中的实现方式,希望可以帮助需要的朋友尽快熟悉和上手Swift3.0。 二、String类中的API变化 除了Swift版的Cocoa框架中的API有了大范围的修改外,Swift的一些核心库也有了很大的改动。 Swift3.0中的字符串类型String在方法API上更加简洁,其中变动较大的是与下标相关的方法,列举如下: var string = "Hello-Swift" //获取某个下标后一个下标对应的字符 char="e" //swift2.2 //var char = string[startIndex.successor()]

fir.im Weekly

為{幸葍}努か 提交于 2019-11-28 15:16:28
无论你是移动开发者,还是桌面端开发者,或者正在IoT领域探索的技术人员,那么应该更加关注 iDev 全平台开发者大会 ,也许是后半年 iOS 开发者最盛大的技术盛宴。既有知名公司带来专业视野,又有从 Swift 到函数式编程、HomeKit, watchOS 开发、 macOS 内核探索等技术分享,非常值得去听一听。Ps:fir.im 为大家争取了当前票价款额外 8 折优惠,感兴趣的朋友去 这里 购买. 除此之外,本期 fir.im Weekly 重点整理了关于 swift3 适配、开发、迁移的实战经验和 iOS/Android 相关的技术干货,一起来看看。 『 Swift3 适配、开发、迁移 』 Swift 3 改动总结 no-computer 花了近 3 天时间,12956 行增改,9817 行删减,把近 360 个文件 的Swift 项目的代码全部迁移,并把整个实战过程分享出来。这篇文章也从语言使用的角度上,Swift 3 到底有哪些改变和新特性。 文章 传送门 。 Swift 3 迁移工作总结 Swift 3.0 正式版发布了差不多快一个月了, @王浙剑 把手上的项目都迁移到了 Swift 3.0,并写出了些总结,详情见 链接 。 ## 适配 Swift 3 的一点小经验和坑 图拉鼎 前段时间发布了基于 Swift 3.0 的 奇点 2.1.1 版本,主要是适配了

Swift3.0语言教程使用路径字符串

拟墨画扇 提交于 2019-11-27 09:07:54
Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串。本小节将讲解如何使用路径字符串。 1. 组合路径 开发者可以将数组快速的组合成一个路径,此功能的实现可以使用NSString中的path(withComponents:)方法,其语法形式如下: class func path(withComponents components: [String]) -> String 其中,components是一个字符串数组。 【示例1-80】以下将数组组合为路径。 import Foundation let components:[String]=["Users","mac","Desktop","File.txt"] let path=NSString.path(withComponents: components) //组合路径 print(path) 运行结果如下: Users/mac/Desktop/File.txt 2. 分割路径 在NSString中有组合路径相对的就有分割路径,使用pathComponents属性就可以实现此功能,其语法形式如下: var pathComponents: [String] { get } 【示例1-81】以下将实现路径的分割。 import Foundation var

Swift3.0语言教程删除字符与处理字符编码

时光怂恿深爱的人放手 提交于 2019-11-26 21:15:08
Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除。在NSString中trimmingCharacters(in:)方法就可以实现此功能,其语法形式如下: func trimmingCharacters(in set: CharacterSet) -> String 其中,set用来设置要删除的字符集。 【示例1-72】以下将字符串中的空格和回车删除。 import Foundation var a=NSString(string:"\n Hello ") print("删除前:\(a)") var b:CharacterSet=NSCharacterSet.whitespacesAndNewlines as CharacterSet print(" 删除后:\(a.trimmingCharacters(in: b))") // 去除空格和回车 运行结果如下: 删除前: Hello 删除后:Hello Swift3.0语言教程处理字符编码 字符编码也就是字符串中字符的编码格式,针对编码的不同,生成或者获取的字符串也是不一样的。本节将讲解以下有关字符编码的处理。 1.获取编码内容 在字符编码处理中,最为重要的就是要获取编码的内容

Swift3.0语言教程字符串与文件的数据转换

限于喜欢 提交于 2019-11-26 11:42:52
Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中。当然,开发者也可以将写入的内容进行读取,并转换为字符串。首先我们来看如何将字符串中的字符写入到文件中,要想实现此功能,需要使用到NSString中的write(toFile:atomically:encoding:)方法,其语法形式如下: func write(toFile path: String, atomically useAuxiliaryFile: Bool, encoding enc: UInt) throws 其中,参数说明如下: path:用来指定写入到文件的路径。 useAuxiliaryFile:用来指定是否先将字符串写入到辅助文档。 enc:用来指定编码格式。 【示例1-100】以下将字符串中的字符写入到File空文件中。 import Foundation var str=NSString(string:"All things are difficult before they are easy.") var path="/Users/mac/Desktop/File" //写入 do{ try str.write(toFile: path, atomically: true,