美文网首页小经验小TipiOS-swift
十六、Swift3.0之KVC函数调用的实现(构建模型)

十六、Swift3.0之KVC函数调用的实现(构建模型)

作者: ZhengYaWei | 来源:发表于2017-02-26 23:40 被阅读295次

    总结:
    1、一般定义模型属性的时候,如果是对象,通常都是可选的。原因如下两点:
    - a、在需要的时候加载
    - b、避免写构造函数,可以简化代码
    2、如果是基本数据类型,不能设置为可选的,要设置初始值,否则KVC会崩溃。
    3、如果需要使用KVC设置数值,属性不能是private

    4、在使用KVC方法之前(如:setValuesForKeys方法),应该调用super.init(),保证对象初始化完成

    class Person: NSObject {
        //name是可选的, 在OC中很多的属性都是在需要的时候创建的
        //例如: vc.view  tableViewCell.textLbale  因为在手机开发中,内存很宝贵,有些属性并不是一定需要分配空间的
        //延时加载,在需要的时候创建
        var name: String?
        
        
        //给基本数据类型初始化
        //使用KVC会提示无法找到age的KEY,因为Int是一个基本数据类型的结构体,OC中只有基本数据类型。因此对于基本数据类型要设置初始值。
        var age: Int = 0
    //    var age: Int?
        
        //私有属性
        //如果是private属性,使用KVC设置值的时候,同样无法设置
        //如果设置为private属性是禁止外部访问的
    //    private var title: String?
         var title: String?
        init(dict: [String: AnyObject]) {
            super.init()
            //setValuesForKeys是KVC方法
            //KVC的方法又是OC的方法,在运行时给对象发送消息,这点要求对象已经实例化完成。super.init()就是用来保证对象初始化完成。
            setValuesForKeys(dict)
            
        }
        //重写父类的方法
        override func setValue(_ value: Any?, forUndefinedKey key: String) {
            //没有调用super,将父类的代码完全覆盖,不会崩溃
        }
    }
    
    

    相关文章

      网友评论

        本文标题:十六、Swift3.0之KVC函数调用的实现(构建模型)

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