【发布时间】:2019-07-04 02:51:05
【问题描述】:
我使用 Xcode 9.2 创建了一个全新的 macOS 应用程序,并在项目模板中选择了“创建基于文档的应用程序”和“使用核心数据”。
我进行了四项更改:
编辑 CoreData 模型以添加一个名为“Entity”的实体,该实体具有两个字符串属性“name”和“content”。
使用“Editor->Create NSManagedObject subclass”为Entity生成便捷方法。
将默认的 Window.xib 替换为新的空 Window.xib。
-
将以下代码添加到 Document.swift,其中包含我的
NSPersistentDocument子类:override func windowControllerDidLoadNib(_ windowController: NSWindowController) { super.windowControllerDidLoadNib(windowController) let entity = Entity(context: managedObjectContext!) entity.name = "TestEntity" entity.content = "test content goes here" Swift.print("edited: \(self.isDocumentEdited)") // prints "NO" }
我认为这足以自动启用 File->Save... 菜单项。它不是。它仍然灰显。打印出来的isDocumentEdited 的值为NO。
但是,当我退出应用程序时,会在标准对话框中询问我Do you want to save the changes made to the document "Untitled"?。所以 Core Data 知道我的更改,但似乎它可能没有将它们与文档窗口联系起来......?
我在这里缺少什么?我需要做什么才能将前台文档窗口与NSPersistentDocument 实例相关联?
【问题讨论】: