gpt4 book ai didi

arrays - 使用 KVO 判断元素何时被添加到数组中

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:29 24 4
gpt4 key购买 nike

我想检查是否已使用 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 were added”打印到控制台。我的 viewDidLoad() 函数只是调用将元素添加到数组的函数,目前没有其他任何东西。

最佳答案

很遗憾,您不能将观察者添加到 Int 中,因为它不会子类化 NSObject

参见 Apple Docs并搜索“键值观察”

You can use key-value observing with a Swift class, as long as the class inherits from the NSObject class.

否则,您的 KVO 样板代码对我来说看起来不错。

如果您想在数组内容更改时收到通知,可以尝试@Paul Patterson 推荐的方法和use a proxy object

关于arrays - 使用 KVO 判断元素何时被添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com