gpt4 book ai didi

objective-c - Cocoa 在没有托管对象上下文的情况下无法执行操作

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

我有一个基于 Mac 窗口的应用程序,使用 CoreData 和 Cocoa 绑定(bind)将 CoreData 实体绑定(bind)到 NSArrayController 以在 NSCollectionView 中显示。

我的 Controller 上有一个名为 ManagedObjectConext 的属性(设置为 View 文件所有者)。在 awakeFromNib 方法中,我尝试将 ManagedObjectContext (MOC) 属性设置为:

managedObjectContext = [(MyApplicationAppDelegate *)[[NSApplication sharedApplication] delegate] managedObjectContext];
managedObjectContext = [[NSApp delegate] managedObjectContext];

我还配置了 NSArrayControllers MOC 绑定(bind)到“文件所有者”MOC 属性,以及属性绑定(bind)到我的 CoreData 实体的 MOC 属性。

但是,每次我在应用程序即将进行绑定(bind)之前运行该应用程序时,都会收到以下错误消息:

Cocoa 在没有托管对象上下文的情况下无法执行操作

我已登录控制台来检查 MOC 是否为 nil,我认为它不是,因为这是来自 MOC 对象的 NSLog:myMoc = NSManagedObjectContext: 0x10052f9c0

我现在完全被难住了,而且很沮丧,本来应该如此简单的事情却占用了我这么多的时间!任何帮助将不胜感激。

最佳答案

绑定(bind)是在 nib 中定义的,因此如果 nib 不知道 Controller 的 ManagedObjectContext 属性,则绑定(bind)也不知道。

在界面编辑器中,您需要将数组 Controller 的绑定(bind)面板中的 ManagedObjectContext 键绑定(bind)到特定上下文。

对于单上下文应用程序,执行此操作的最简单方法是将应用程序委托(delegate)中的 ManagedObjectContext 属性标记为 IBOutlet,以便它显示在界面编辑器中。然后直接从阵列 Controller 的面板绑定(bind)它即可。

老实说,我不知道他们为什么不在 Xcode 模板本身中这样做。你最终会经常这样做。

关于objective-c - Cocoa 在没有托管对象上下文的情况下无法执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997509/

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