在 NSManaged 变量上使用属性观察器 [英] Using property observers on NSManaged vars

查看:47
本文介绍了在 NSManaged 变量上使用属性观察器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在类中声明了一个 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.这不是绝对必需的,但如果您删除它,您很遗憾需要为该属性实现 getset.您需要添加类似

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆