美文网首页
Session212-What new in Foundatio

Session212-What new in Foundatio

作者: 雷侯塞利 | 来源:发表于2017-07-02 16:17 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Session212-What new in Foundatio

          本文链接:https://www.haomeiwen.com/subject/jenncxtx.html