NSPersistentDocument和File菜单项

时间:2019-02-10 12:45:09

标签: swift core-data

我已经使用Xcode 9.2创建了一个全新的macOS应用程序,并在项目模板中选择了“基于文档的应用程序”和“使用核心数据”。

我做了四处更改:

  1. 编辑了CoreData模型,以添加具有两个字符串属性“名称”和“内容”的名为“实体”的实体。

  2. 使用“编辑器->创建NSManagedObject子类”为实体生成便捷方法。

  3. 用新的空Window.xib替换默认的Window.xib。

  4. 将以下代码添加到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实例相关联,该怎么做?

1 个答案:

答案 0 :(得分:0)

解决了。我的新Document.xib中缺少以下三件事:

  1. 文件所有者->类需要设置为Document
  2. 我需要在文件所有者的window属性中添加引荐出口
  3. 我需要从delegate属性向文件所有者添加一个插座