import UIKit
//kvc 目的 -> 字典转模型
//kvc本质:基于运行时,向对象动态的发送setValue: forKey: 这个消息 给对象身上的属性赋值
class Person: NSObject {
var name: String?
// var age : Int?
// this class is not key value coding-compliant for the key age.
//报错:age属性与kvc 不兼容,因为 kvc 是oc特有的,在oc里基本数据类型不存在nil这个概念
//解决方式:给基本数据类型初始化
var age: Int = 0
init(dict: [String : Any]) {
super.init()
//保证对象创建完成
//使用Kvc给对象属性赋值
setValuesForKeys(dict)
//便利字典,一次调用setValue: ForKey:
}
override func setValue(_ value: Any?, forKey key: String) {
print("key:\(key),value:\(value)")
super.setValue(value,forKey:key)
}
override func setValue(_ value: Any?, forUndefinedKey key: String) {
print("没有找到key:\(key)")
}
class Student: Person {
var no : String?
//Student 子类中不提供构造函数 能够使用父类的构造函数
}