文档章节

Swift3新增特性(一)

博为峰教研组
 博为峰教研组
发布于 2017/03/31 15:23
字数 408
阅读 11
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

    

Swift3不仅移除了swift2中的部分特性,同时也增加了自己的新特性

1内联序列函数sequence

Swift 3 新增了两个全局函数:sequence(first: next:) 和 sequence(state: next:)。使用它们可以返回一个无限序列。下面是一个简单的使用样例

// 从某一个树节点一直向上遍历到根节点

for node in sequence(first: leaf, next: { $0.parent }) {

    // node is leaf, then leaf.parent, then leaf.parent.parent, etc.

}

// 遍历出所有的2的n次方数(不考虑溢出)

for value in sequence(first: 1, next: { $0 * 2 }) {

    // value is 1, then 2, then 4, then 8, etc.

}

2. key-path不再只能使用String

这个是用在键值编码(KVC)与键值观察(KVO)上的

我们还是可以继续使用 String 类型的 key-Path

//用户类

class User: NSObject{

    var name:String = ""  //姓名

    var age:Int = 0  //年龄

}

 

//创建一个User实例对象

let user1 = User()

user1.name = "hangge"

user1.age = 100

 

//使用KVC取值

let name = user1.value(forKey: "name")

print(name)

 

//使用KVC赋值

user1.setValue("hangge.com", forKey: "name")

但建议使用新增的 #keyPath() 写法,这样可以避免我们因为拼写错误而引发问题。

//使用KVC取值

let name = user1.value(forKeyPath: #keyPath(User.name))

print(name)

 

//使用KVC赋值

user1.setValue("hangge.com", forKeyPath: #keyPath(User.name))

 

3. Foundation 去掉 NS 前缀
比如过去我们使用 Foundation 相关类来对文件中的 JSON 数据进行解析,这么写:

let file = NSBundle.mainBundle().pathForResource("tutorials", ofType: "json")

let url = NSURL(fileURLWithPath: file!)

let data = NSData(contentsOfURL: url)

let json = try! NSJSONSerialization.JSONObjectWithData(data!, options: [])

print(json)

 Swift 3 中,将移除 NS 前缀,就变成了:

let file = Bundle.main.path(forResource: "tutorials", ofType: "json")

let url = URL(fileURLWithPath: file!)

let data = try! Data(contentsOf: url)

let json = try! JSONSerialization.jsonObject(with: data)

print(json)

© 著作权归作者所有

博为峰教研组
粉丝 52
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
Xcode9和Swift4新特性

XCode9新特性 1. 支持远程调试 2. Xcode绑定Github账号 3. 支持Swift类重命名 4. Swift低版本兼容 5. Main Thread Checker 6. 模拟器支持多开 7. 标示功能 8. 协议自动补全 9. 代码段自动抽出...

LvesLi
2017/10/17
0
0
Facebook 针对 iOS 推出 Swift 开发者工具包

Swift3中文网消息,Facebook为iOS开发者推出了Swift开发者工具包(SDK),开发者可以通过Github链接下载https://github.com/facebook/facebook-sdk-swift。目前这一SDK基于Swift2,不过Faceboo...

研习君
2016/07/15
1K
2
苹果正式发布 Swift 3.0 Preview 1 版本,同时发布 Xcode 8 Beta 版

随着WWDC 2016的召开,苹果正式发布了Swift 3.0 Preview 1,这是苹果Swift 3语言的首个稳定开发者预览版。 苹果在其swift.org官方博客中称,Preview 1版本比代码库中打包的snapshot版本稳定很...

研习君
2016/06/14
8.3K
17
AppCode 2016.3 EAP 发布,改进 Swift 解析性能

AppCode 2016.3 EAP 发布更新了,版本代号为 build 163.7743.19,该版本改进了 Swift 解析性能,Swift3 在调试器以及其他更多地方被支持。 其他更新: Swift3 的支持 与 Swift3 集合渲染相关...

局长
2016/11/11
1K
4
Swift3 concurrency

转自我的github: https://github.com/uniquejava/iOSConcurrencyDemo swift3 concurrency This repo is the steps breaking down from this [excellent tutorial][1] and an update for swif......

cyper
2016/10/27
28
0

没有更多内容

加载失败,请刷新页面

加载更多

x005-构造程序逻辑

构造程序逻辑 结合生活例子运用程序语言 百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何...

伟大源于勇敢的开始
35分钟前
3
0
问题汇总

最近在补知识面的时候发现有几个问题, 第一个呢是 教程 没有提前准备好。(视频方面的吧 书上面的 都要有) 第二个呢是 ,开发工具太多了,搞不清楚到底用哪个了 和哪个教程相匹配。 第三个...

T型人才追梦者
今天
7
0
OSChina 周三乱弹 —— 我以前超喜欢晒太阳的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @watergood :分享海先生的单曲《东篱》: 《东篱》- 海先生 手机党少年们想听歌,请使劲儿戳(这里) @xiaoshiyue :早.先喝几大碗鸡汤 @小小...

小小编辑
今天
18
1
法国电力项目二期正式验收

2019年12月10日, 法国电力项目二期正式验收. 二期实现了一个个人能源的自交易/自管理APP + 管理后台。 并就未来的合作技术方向进行了探讨: 去中心化数据存储/搜索引擎 可信计算/零知识证明...

怎当她临去时秋波那一转
今天
13
0
索引延迟关联

前言 今天在看代码的时候学习到了一种索引的优化,就先在此记录下来。 具体 举个例子,原sql如下: SELECT * FROM TABLE WHERE INDEX = '' LIMIT 10000, 10; 现象 就算INDEX用了查询索引,...

无敌小杰杰
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部