首页 > 编程语言 > 详细

Swift中KVC和KVO的使用

时间:2014-10-29 22:22:09      阅读:291      评论:0      收藏:0      [点我收藏+]

原创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 = instance.valueForKey("hwcCSDN") as String
instance.setValue("hello hwc",forKey:"hwcCSDN")

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

第二步,声明一个全局的用来区分是哪个被观察属性的变量
private var mycontext = 0

第三步,在要观察的类中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检测到变化了

Swift中KVC和KVO的使用

原文:http://blog.csdn.net/hello_hwc/article/details/40590955

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!