一尘不染

如何将阵列控制器绑定到核心数据模型?

swift

我是SWIFT编程的新手,正在尝试制作一个简单的应用程序,以学习使用核心数据并将其绑定到应用程序中进行显示。我看了很多示例,但似乎都旧了。我正在使用XCode
9。

我从带有Core Data的MacOS Cocoa应用开始。我有一个名为“锻炼”的简单实体,具有4个属性,日期,秒,运动和rpe。

然后,我在视图控制器场景下添加了一个数组控制器。我添加了一个Table视图,该视图将Array
Controller设置为数据源。我已经添加了用于添加和删除按钮的链接,这些链接指向数组控制器的add和remove方法。

我认为我现在需要做的就是将数组控制器绑定到我的核心数据模型的managedObjectContext。这可以在AppDelegate中找到。但是,当我选择“阵列控制器”并转到“绑定”并选择“参数”时,绑定到的唯一选项是“视图控制器”和“共享用户默认控制器”。我选择了View
Controller,但是无法找出要链接到我的数据模型的Model Key Path。

我觉得我一定缺少明显的东西。我觉得必须有一种方法可以绑定到AppDelegate或从View Controller绑定到Model Key
Path,但我都不知道。任何帮助,不胜感激。


阅读 233

收藏
2020-07-07

共1个答案

一尘不染

在基于情节提要的项目中,没有从视图控制器到AppDelegate类的(绑定)引用。

一种解决方案是init?(coder在视图控制器中添加属性并覆盖

@objc let managedObjectContext: NSManagedObjectContext

required init?(coder: NSCoder) {
    self.managedObjectContext = (NSApp.delegate as! AppDelegate).persistentContainer.viewContext
    super.init(coder: coder)
}

然后绑定ManagedObjectContextViewController-> managedObjectContext

在数组控制器的属性检查器中,不要忘记设置ModeEntity Name,插入实体名称并进行检查Prepares Content

2020-07-07