如何将Array Controller绑定到核心数据模型?

时间:2017-09-21 14:25:11

标签: swift macos core-data cocoa-bindings

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

我开始使用带有Core Data的MacOS Cocoa应用程序。我有一个名为“Workout”的简单实体,有4个属性date,seconds,sport和rpe。

然后我在视图控制器场景下添加了一个Array Controller。我添加了一个Table视图,它将Array Controller设置为数据源。我添加了添加和删除链接到阵列控制器添加和删除方法的按钮。

我认为我现在需要做的就是将Array Controller绑定到我的Core Data Model的managedObjectContext。这可以在AppDelegate中找到。但是,当我选择Array Controller并转到Bindings并选择Para​​meters时,唯一要绑定的选项是“View Controller”和“Shared User Defaults Controller”。我选择了View Controller但无法找出链接到我的数据模型的模型关键路径。

我觉得我必须遗漏一些明显的东西。我觉得必须有一种方法可以从视图控制器绑定到AppDelegate或模型密钥路径,但我也想不通。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:3)

在基于故事板的项目中,没有从视图控制器到AppDelegate类的(绑定)引用。

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

@objc let managedObjectContext: NSManagedObjectContext

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

然后将ManagedObjectContext绑定到ViewController - > managedObjectContext

在数组控制器的属性检查器中,不要忘记将Mode设置为Entity Name,插入实体名称并选中Prepares Content

答案 1 :(得分:0)

将vadian代码中的[<Core_Data_Binding.ViewController 0x6080000c4600> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext更改let managedObjectContext: NSManagedObjectContext修改为@objc let managedObjectContext: NSManagedObjectContext。默认情况下,XCode 9不会向Objective C公开属性和方法: The use of Swift 3 @objc inference in Swift 4 mode is deprecated?