ios - 如何设置 NSManaged 变量?

标签 ios swift class cocoa nsmanagedobject

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

@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/

相关文章:

ios - 带边框的按钮(最优化)

ios - 如何将水平堆栈 View 内的所有按钮拉伸(stretch)为设备宽度

ios - 如何在 Swift 中将时间/日期数组从最旧到最新排序?

java - 是否可以在一个包中创建多个类并将它们导入到另一个包中?

ios - 更改 UITableView 中的行高度会导致奇怪的故障/闪烁

swift - 在 Alamofire 问题中上传文件的客户端证书

swift - 我应该在 self 被释放时调用完成处理程序吗

ios - UIPanGestureRecognizer 有时不会进入最终状态

python - 如何为这些 DNS 数据库方法创建 Python 类?

java - 如何检查对象是否实现了特定的接口(interface),而不是这个接口(interface)的后代,在 Java 中