我有一个具有两个关系的 NSManagedObject 类:courseA
和 courseB
。
这些关系应该用动态变量表示。如何从类外部更改此变量?
@objc(Universtity)
public class Universtity: NSManagedObject {
dynamic var name: String {
get {
let name = self.courseA?.name
return name!
}
}
}
例如从像 University.name = University.courseB.name
这样的 ViewController 中?
我在考虑通知,但这似乎可能更复杂一些。
如果没有其他办法,我应该如何在大学类(class)内部实现观察者?
谢谢你的每一个想法。
最佳答案
查看您的代码,您已经声明了一个“已计算”或“只读”变量。这是一个变量,其值来自另一个变量或变量组合。
我看不到你的数据模型,所以不清楚你是否在核心数据模型中定义了名称参数。无论如何,如果你有逻辑有点困惑,因为你定义的 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 中强制展开非可选值的模式也不是最佳的。我没有编辑这个,因为那是另一个讨论,但我建议问问自己这个问题,我确定我为什么要这样做吗?对于每个“?”和 ”!”你用。
关于ios - 如何设置 NSManaged 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454815/