我已经使用Xcode 9.2创建了一个全新的macOS应用程序,并在项目模板中选择了“基于文档的应用程序”和“使用核心数据”。
我做了四处更改:
编辑了CoreData模型,以添加具有两个字符串属性“名称”和“内容”的名为“实体”的实体。
使用“编辑器->创建NSManagedObject子类”为实体生成便捷方法。
用新的空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
实例相关联,该怎么做?
答案 0 :(得分:0)
解决了。我的新Document.xib中缺少以下三件事:
Document
window
属性中添加引荐出口delegate
属性向文件所有者添加一个插座