在 NSManaged 变量上使用属性观察器 [英] Using property observers on NSManaged vars
问题描述
我在类中声明了一个 var,如下所示:
I have a var declared in a class like so:
@NSManaged var isFavorite: Bool
我想声明一个属性观察者,与下面的非常相似.
I would like to declare a property observer, very similar to the one below.
var organization: String {
didSet { postNotificationWithName( "newData" ) }
}
但是,Swift 告诉我不允许在 NSManaged
变量上使用属性观察器.有什么方法可以为我的 isFavorite
变量实现这样的功能或类似的功能吗?
However, Swift tells me that having property observers on NSManaged
vars is not allowed. Is there any way I can implement such a feature or something similar for my isFavorite
variable?
推荐答案
Yes-- 删除 @NSManaged
.这不是绝对必需的,但如果您删除它,您很遗憾需要为该属性实现 get
和 set
.您需要添加类似
Yes-- delete the @NSManaged
. It's not absolutely required, but if you delete it you unfortunately need to implement get
and set
for the property. You would need to add something like
@objc
仅在您希望能够对属性执行 KVO 时才需要.
The @objc
is only needed if you want to be able to do KVO on the property.
@objc public var newData: String? {
set {
willChangeValue(forKey: "newData")
setPrimitiveValue(newValue, forKey: "newData")
didChangeValue(forKey: "newData")
}
get {
willAccessValue(forKey: "newData")
let text = primitiveValue(forKey: "newData") as? String
didAccessValue(forKey: "newData")
return text
}
}
如果您实际上并不需要它们,那么实现这两个功能有点烦人,但目前就是这样.
It's kind of annoying to implement both of these if you don't actually need them but that's the way it is for now.
因为你有一个 set
,你可能不需要 didSet
,但如果你想要一个 didSet
,你仍然可以添加.
Since you'll have a set
, you might not need a didSet
, but you can still add a didSet
if you want one.
这篇关于在 NSManaged 变量上使用属性观察器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!