首页 > 代码库 > Swift中KVC和KVO的使用
Swift中KVC和KVO的使用
原创BLog,转载请注明出处
Swift中使用KVC和KVO的类都必须必须继承自NSObject
KVC
key-value coding是一种间接访问对象的机制
key的值就是属性名称的字符串,返回的value是任意类型,需要自己转化为需要的类型
KVC主要就是两个方法
(1)通过key设置对应的属性
(2)通过key获取对应的属性
举例
class TestForKVC:NSObject{ var hwcCSDN = "hello world" } var instance = TestForKVC() var value = http://www.mamicode.com/instance.valueForKey("hwcCSDN") as String>
KVO
key-value observing
建立在KVC之上的的机制
主要功能是检测对象属性的变化
这是一个完善的机制,不需要用户自己设计复杂的观察者模式
对需要观察的属性要在前面加上dynamic关键字
举例
第一步,对要观察的对象的属性加上dynamic关键字class ToObserver:NSObject{ dynamic var hwcDate = NSDate() func updateDate(){ hwcDate = NSDate() } }
第二步,声明一个全局的用来区分是哪个被观察属性的变量private var mycontext = 0
第三步,在要观察的类中addObserver,在析构中removeObserver,重写observerValueForKeyPathclass TestForCSDN:UIViewController{ var testVariable = ToObserver() override func viewDidLoad(){ super.viewDidLoad() testVariable.addObserver(self,forKeyPath:"hwcDate",options:.New,context:&mycontext) } deinit{ testVariable.removeObserver(self,forKeyPath:"hwcDate") } overfide func observeValueForKeyPath(keyPath:String,ofObject:AnyObject,change:[NSObject:AnyObject],context:UnsafeMutablePointer<Void>){ if(context == &mycontext){ println("Changed to:\(change[NSKeyValueChangeNewKey]!)") } } }这样,就可以在函数observeValueForKeyPath检测到变化了
Swift中KVC和KVO的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。