美文网首页iOS Developer
swift kvc 构造函数

swift kvc 构造函数

作者: meng_huang | 来源:发表于2016-07-07 22:53 被阅读74次
  • kvc 是oc特有 ,KVC 本质上是在运行时,直接调用程序会崩溃

介绍

  • kvc 构造函数

    1. kvc构造函数的作用是字典转模型
  • kvc本质

    1. 动态向'对象' 发送setValue: forKey: 这个消息,给我们对象里面的属性赋值
    1. 对象需要创建完成后调用kvc

使用

  • age 与 kvc不兼容, 因为kvc是oc特有的, oc里面基本数据类型不存在nil

  • 设置初始值 var age: Int = 0

  • 创建类


class Person: NSObject {

    
    var name: String?
    
    var age: Int = 0
    
    init(dict: [String : NSObject]) {
        
        super.init()
        
        setValuesForKeysWithDictionary(dict)
        
    }
    
    
/*
     override func setValue(value: AnyObject?, forKey key: String) {
        //  千万不要忘记调用super,否则属性赋值失败
        //  不用调用该方法,否则会递归调用
        //super.setValue(value, forKeyPath: key)
        
        super.setValue(value, forKey: key)
        
        
        //    super.setValue(value, forKey: key)
        
         //  1. 判断我们key在类里面是否定义,如果定了 那么直接赋值,否则会调用setValue(value: AnyObject?, forUndefinedKey key: String)
       
        
    }
    
    
    
    //重写方法
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        //不用调用super, 否则会崩溃
    }

*/
}

  • 调用
 
let person = Person(dict: ["name" : "小明", "age": 18])
   
   
print(person.name! + "---" + "\(person.age)")
  • 输出结果
小明---18

相关文章

网友评论

    本文标题: swift kvc 构造函数

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