gpt4 book ai didi

cocoa - -makeWindowControllers 是初始化 NSPersistentDocument 的最佳位置吗?

转载 作者:行者123 更新时间:2023-12-03 16:50:51 25 4
gpt4 key购买 nike

使用 NSPersistentDocument 加载现有文档时,作为初始化的一部分,我想准备一些内容:

    NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName:@"DocumentRoot"];
NSArray *results = [self.managedObjectContext executeFetchRequest:req error:NULL];
if (results.count) self._docRoot = [results objectAtIndex:0];

当我将此代码放入 -init 中时,获取请求不会返回任何结果。

我在将 View Controller 组件从我的 NSPersistentDocument 子类重构为新的 NSWindowController 子类时遇到了这个问题。我曾经在 -windowControllerDidLoadNib: 中处理此初始化,但不再调用它。

如果我将代码从 -init 移动到 -makeWindowControllers 我会得到我期望的结果。 -makeWindowControllers 真的适合准备这样的内容吗?

最佳答案

根据我收到的回复,我认为我做的是正确的事情,所以这是我对自己问题的回答。

如果您使用的是 NSPercientDocument 提供的 Core Data 堆栈,则无法在 -init 中使用 Core Data。

相反,您应该:

  1. 将文档初始化代码直接放入 -windowControllerDidLoadNib: 中 - 或者,如果您使用自定义 NSWindowController 子类,则将其放入 -makeWindowControllers 中。
  2. 您还可以将文档初始化代码抽象为具有一些唯一名称(例如 -setUpDocument)的辅助方法,并从 -makeWindowControllers/- 调用该方法windowControllerDidLoadNib:改为

如果您使用的是普通 NSDocument,或者您要自己设置核心数据堆栈,则可以在 -init 中设置文档模型。

关于cocoa - -makeWindowControllers 是初始化 NSPersistentDocument 的最佳位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734701/

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