国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > Swift中KVC和KVO的使用

Swift中KVC和KVO的使用

来源:程序员人生   发布时间:2014-11-22 09:19:11 阅读次数:7123次

原创BLog,转载请注明出处

Swift中使用KVC和KVO的类都必须必须继承自NSObject

KVC

key-value coding
是1种间接访问对象的机制
key的值就是属性名称的字符串,返回的value是任意类型,需要自己转化为需要的类型
KVC主要就是两个方法
(1)通过key设置对应的属性
(2)通过key获得对应的属性
举例
class TestForKVC:NSObject{ var hwcCSDN = "hello world" } var instance = TestForKVC() var value = instance.valueForKey("hwcCSDN") as String instance.setValue("hello hwc",forKey:"hwcCSDN")

KVO
key-value observing
建立在KVC之上的的机制
主要功能是检测对象属性的变化
这是1个完善的机制,不需要用户自己设计复杂的视察者模式
对需要视察的属性要在前面加上dynamic关键字
举例
第1步,对要视察的对象的属性加上dynamic关键字
class ToObserver:NSObject{ dynamic var hwcDate = NSDate() func updateDate(){ hwcDate = NSDate() } }

第2步,声明1个全局的用来辨别是哪一个被视察属性的变量
private var mycontext = 0

第3步,在要视察的类中addObserver,在析构中removeObserver,重写observerValueForKeyPath
class 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检测到变化了

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生