博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift3新增特性(一)
阅读量:6857 次
发布时间:2019-06-26

本文共 1536 字,大约阅读时间需要 5 分钟。

hot3.png

    

不仅移除了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不再只能使用

这个是用在键值编码(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 前缀

比如过去我们使用相关类来对文件中的 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)

转载于:https://my.oschina.net/u/2971691/blog/871620

你可能感兴趣的文章
GIT在windows下搭建
查看>>
shell编程系列26--大型脚本工具开发实战
查看>>
如何改变PMO在组织中的尴尬处境的?
查看>>
sys.argv[]
查看>>
What's the best Linux server for you? == 最佳Linux服务器发行版
查看>>
docker swarm英文文档学习-1-概述
查看>>
Bootstrap网格
查看>>
IM(XMPP)介绍
查看>>
HDU3188 Just A Triangle【水题】
查看>>
HDU3782 xxx定律【数学计算+水题】
查看>>
趣味程序之趣味系列
查看>>
8.使用下拉列表框进行多选
查看>>
@responseBody注解的使用
查看>>
用maven在eclipse中创建Web项目
查看>>
移动端web开发JS使用Date()的值为invalid Date或者为NaN
查看>>
聊一聊python的单例模式
查看>>
redis应用场景:实现简单计数器-防止刷单
查看>>
python——元组和字典学习笔记
查看>>
面试遇到的问题(被虐了就更新)
查看>>
Windows Phone 8.1 数据处理
查看>>