gpt4 book ai didi

swift - NSPersistentDocument 和 File 菜单项

转载 作者:行者123 更新时间:2023-11-30 10:50:41 25 4
gpt4 key购买 nike

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

我做了四项更改:

  1. 编辑 CoreData 模型以添加一个名为“Entity”的实体,该实体具有两个字符串属性“name”和“content”。

  2. 使用“Editor->Create NSManagedObject subclass”为实体生成便捷方法。

  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"->“保存...”菜单项。它不是。它仍然呈灰色。打印时 isDocumentEdited 的值为 NO

但是,当我退出应用程序时,系统会在标准对话框中询问我是否要保存对文档“Untitled”所做的更改?。所以核心数据知道我的更改,但似乎它可能没有将它们与文档窗口连接起来......?

我在这里缺少什么?我需要做什么才能将前台文档窗口与 NSPersistentDocument 实例关联起来?

最佳答案

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

  1. 文件所有者 -> 需要将类设置为文档
  2. 我需要向文件所有者、window 属性添加引用 socket
  3. 我需要将 delegate 属性中的 Outlet 添加到文件所有者

关于swift - NSPersistentDocument 和 File 菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com