我想检查是否已使用KVO在swift中将元素添加到数组中,并且我基本上从Apple的文档中复制了该示例,但是当代码运行时,它不会在数组大小更新时捕获。这就是我现在所拥有的:
class ShowDirectory: NSObject {
var shows = [Show]()
dynamic var showCount = Int()
func updateDate(x: Int) {
showCount = x
}
}
class MyObserver: NSObject {
var objectToObserve = ShowDirectory()
override init() {
super.init()
objectToObserve.addObserver(self, forKeyPath: "showCount", options: .New, context: &myContext)
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if context == &myContext {
if let newValue = change?[NSKeyValueChangeNewKey] {
print("\(newValue) shows were added")
}
} else {
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
}
deinit {
objectToObserve.removeObserver(self, forKeyPath: "myDate", context: &myContext)
}
}
在我将数组添加到数组之后,我将showCount设置为等于数组中元素的数量,但是,它不会向控制台打印“X shows are added”。我的viewDidLoad()函数只是调用向数组添加元素的函数,而不是其他任何东西。
答案 0 :(得分:1)
您遗憾的是,您无法作为观察者添加到NSObject
,因为它不会将<?php
if(isset($_POST['action']))
{
echo $_POST['action'];
}
?>
查看Apple Docs并搜索&#34;键值观察&#34;
只要该类继承自NSObject类,就可以对Swift类使用键值观察。
否则,您的KVO样板代码看起来不错。
如果您想在阵列内容发生变化时收到通知,可以尝试@Paul Patterson推荐的内容和use a proxy object