如何设置 NSManaged 变量?

How to set a NSManaged variable?

我有一个 NSManagedObject class 有两个关系:courseAcourseB。 这些关系应该用动态变量表示。如何从 class 外部更改此变量?

@objc(Universtity)
    public class Universtity: NSManagedObject {

        dynamic var name: String {
            get {
                let name = self.courseA?.name
                return name!
            }
        }
    }

例如来自 ViewController 之类的 University.name = University.courseB.name? 我在考虑通知,但这似乎可能更复杂一些。

如果没有别的办法,大学内部应该怎么实现observerclass?

谢谢你的每一个想法。

查看您的代码,您声明了一个 "computed" 或 "ready-only" 变量。这是一个变量,其值来自另一个变量或变量组合。

我看不到你的数据模型,所以不清楚你是否在核心数据模型中定义了名称参数。无论如何,如果您的逻辑有些混乱,因为您定义的 getter 意味着它可能持有的任何值都将被忽略。如果要确保可以写入该值,则需要定义一个 setter 来设置 self.courseA.name。您无需担心键值编码通知,因为它们将由 Core Data Managed Object 触发。

public class Universtity: NSManagedObject {

    dynamic var name: String {
        get {
            let name = self.courseA?.name
            return name!
        }
        set(newValue) {
            courseA!.name = newValue
        }
    }
}

此外,您用于在 getter 中强制展开非可选值的模式也不是最佳的。我没有编辑这个,因为那是另一个讨论,但我建议问问自己这个问题,我确定我为什么要这样做吗?对于每个“?”和 ”!”你用。