无法使用“接口”构建器库中的“受管对象上下文代理”

时间:2013-11-24 21:00:36

标签: macos cocoa nsmanagedobjectcontext nsarraycontroller

我正在创建一个简单的mac os x app,在从本地db中检索这些记录后,我将在表视图中显示一些记录。我正在使用核心数据和NSArrayController代理,我试图通过可可绑定实现它。

现在,通过在NSArrayController代理中执行此绑定,我可以轻松地使其工作:

Proxy: NSArrayController
Parameters: Managed Object Context
Bind to: App Delegate
Model Key Path: self.managedObjectContext

但我正在尝试使用Interface builder库中的NSManagedObjectContext代理进行此绑定:

Proxy: NSArrayController
Parameters: Managed Object Context
Bind to: Managed Object Context
Model Key Path: self

我很惊讶在绑定平台中没有可用的绑定。至少应该有一个绑定来将持久存储协调器映射到它。

要为MOC分配持久存储协调器,我使用下面的代码:

@property (strong) IBOutlet NSManagedObjectContext *listManagedObjectContext;

[self.listManagedObjectContext setPersistentStoreCoordinator:[NSAppDelegate persistentStoreCoordinator]];

问题是 -

  

我在控制台中不断收到此消息:

     

由于托管对象上下文没有,因此无法执行操作   持久性商店协调员

使用此堆栈回溯:

0   CoreFoundation                      0x00007fff8b59fb06 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff881103f0 objc_exception_throw + 43
2   CoreFoundation                      0x00007fff8b59f8dc +[NSException raise:format:] + 204
3   AppKit                              0x00007fff907eb5e6 -[_NSManagedProxy _persistentStoreCoordinator] + 81
4   AppKit                              0x00007fff907eb528 -[_NSManagedProxy _entity] + 49
5   AppKit                              0x00007fff907eb43a -[_NSManagedProxy fetchRequestWithSortDescriptors:limit:] + 95
6   AppKit                              0x00007fff90cc04f0 -[NSObjectController(NSManagedController) _executeFetch:didCommitSuccessfully:actionSender:] + 73

我的问题是 -

  1. 在界面构建器库中使用NSManagedObjectContext代理的正确方法是什么?
  2. 如何解决观察到的问题? 请提出建议。

1 个答案:

答案 0 :(得分:0)

使用此代码解决了这个问题:

- (void)awakeFromNib
{
    [self.listManagedObjectContext setPersistentStoreCoordinator:[NSAppDelegate persistentStoreCoordinator]];
}