Session212-What new in Foundation

KeyPath

在Swift3.0中KeyPath其实都是String,且使用KeyPath使用KVC时候得到的是Any对象

Swift3.0 KeyPath

在Swift4.0中KeyPath用对象进行了封装,定义如下:

/// A key path from a specific root type to a specific resulting value type.
public class KeyPath<Root, Value> : PartialKeyPath<Root> {
}

以下面这个对象为例

屏幕快照 2017-07-02 下午3.16.24.png

下面的KeyPath是获取Kid对象的nickname属性


屏幕快照 2017-07-02 下午3.17.06.png

KeyPath开始都是以""开始,紧跟着是要使用KeyPath的对象的类型,后面跟着".属性名"来形成完整的KeyPath

  • KeyPath支持对象属性的属性
屏幕快照 2017-07-02 下午3.20.00.png
  • KeyPath支持Optional属性的属性
屏幕快照 2017-07-02 下午3.20.47.png
  • KeyPath支持下标属性
屏幕快照 2017-07-02 下午3.21.12.png
屏幕快照 2017-07-02 下午3.22.02.png

KeyPath的拼接

KeyPath支持两个KeyPath对象的拼接,条件是拼接的KeyPath的value类型等于被拼接的KeyPath的Root类型

屏幕快照 2017-07-02 下午3.30.14.png

KeyPath的种类

屏幕快照 2017-07-02 下午3.32.28.png

其中KeyPath为只读的KeyPath
WritableKeyPath为针对Mutable Value Type使用的KeyPath
ReferenceWritableKeyPath为针对引用的可写的类型使用的KeyPath

KVO

由于上面的新的KeyPath,则KVO也发生了新的变化:

屏幕快照 2017-07-02 下午3.36.51.png

最大的变化就是在调用KVO方法的时候就可以传进回调方法

Archival and serialization 归档和序列化

可以通过指定Swift 类型(class, enum, struct)实现Codable协议来标识该类型支持归档和序列化。
大部分情况下,如果某个类型的所有成员类型都实现了Codeable协议的话,只需要这一步就可以完成对该类型的数据的归档和序列化功能的支持,因为编译器会自动生成相应的encode\decode方法,当然你也可以重写这些方法。
Codable其实是一个组合协议:

public typealias Codable = Decodable & Encodable
屏幕快照 2017-07-02 下午3.51.32.png

自定义归档和序列化的key

屏幕快照 2017-07-02 下午3.53.04.png

实现以上的private enum并赋值自定义key

归档和序列化错误处理

通过捕获DecodingError错误来处理,其中包含了keyNotFound valueNotFound typeMismatch dataCorrupt等错误

系统原生支持的Codable对象

屏幕快照 2017-07-02 下午4.15.48.png

自定义自己的Codable属性

屏幕快照 2017-07-02 下午4.16.55.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,401评论 30 472
  • 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就...
    iOS_Alex阅读 5,496评论 1 24
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,618评论 4 61
  • 来自网络 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会...
    用心在飞阅读 4,302评论 5 4
  • 本文参加#感悟三下乡,青春筑梦行#活动,本人承诺,文章内容为原创,且未在其他平台发表过。 我习惯回想高中的欢笑,细...
    俩呆儿阅读 1,796评论 0 1

友情链接更多精彩内容