kvc构造函数

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 子类中不提供构造函数 能够使用父类的构造函数

}

你可能感兴趣的:(kvc构造函数)