Swift3新增特性(一)
2017-03-31 15:24
211 查看
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)
相关文章推荐
- Swift3新增特性(二)
- Swift3新增特性(一)
- Swift3新增特性(二)
- Java7与Java8新增语法特性
- HTML5.1 新增的14项特性学习
- 探秘Java 7 新增垃圾回收器G1特性
- Android Studio 3.0 新特性,Android Studio 3.0新增的功能和更改
- Swift新特性 -- 访问控制(Access Control)
- [Swift的5个特性]
- 向日葵甘特图组件新增特性
- Swift 3 新特性
- HTML5建立的规则以及新增特性
- Spring Boot 2.0新增的Actuator端点的特性
- [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding
- Oracle 11g新增not null的字段比10g快--新特性
- C++11新特性应用--介绍几个新增的便利算法(用于分区的几个算法)
- CSS3----新增特性及其在主流浏览器中的兼容性
- swift详解之十九--------------UITableView的基本操作(下拉刷新,新增删除,分组,检索等)
- iOS开发 Swift3新特性
- APP测试 - android os6,7 新增特性测试