0

我曾使用基于文档的应用程序使用 Core Data。但是知道,我正在尝试构建一个类似于NotesMac OS X 上的应用程序的应用程序。所以我创建了一个基于数据模型的非文档应用程序。我绑定值的方式与我以前的 Core Data 应用程序完全相同。

MyarrayController设置为Entity Mode我的实体的名称,它Prepares Contents被检查并且它ManagedObjectContext被绑定到File's Owner's managedObjectContext。这正是我在以前的应用程序中所做的。但是使用这些绑定,我有以下错误:

[<NSApplication 0x101a032c0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext.
(
0   CoreFoundation                      0x00007fff96525b06 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff915563f0 objc_exception_throw + 43
2   CoreFoundation                      0x00007fff965b9f49 -[NSException raise] + 9
3   Foundation                          0x00007fff91e518bc -      [NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 238
4   Foundation                          0x00007fff91d99539 -  [NSObject(NSKeyValueCoding) valueForKey:] + 400
5   AppKit                              0x00007fff8f41a6fb -  [NSApplication(NSScripting) valueForKey:] + 514
6   Foundation                          0x00007fff91db9de8 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 341
7   AppKit                              0x00007fff8f6580d4 -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 163
8   AppKit                              0x00007fff8f665a13 -[NSObjectParameterBinder _updateObject:observedController:observedKeyPath:context:] + 1046
9   AppKit                              0x00007fff8f64f6c9 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 641
10  AppKit                              0x00007fff8f4d80ca -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1012
11  AppKit                              0x00007fff8f4b714d loadNib + 317
12  AppKit                              0x00007fff8f4b6679 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 219
13  AppKit                              0x00007fff8f4b64ae -[NSBundle(NSNibLoading) loadNibNamed:owner:topLevelObjects:] + 200
14  AppKit                              0x00007fff8f4b628e +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 360
15  AppKit                              0x00007fff8f4b2a2f NSApplicationMain + 398
16  Secrets                             0x0000000100000ea2 main + 34
17  libdyld.dylib                       0x00007fff920927e1 start + 0
18  ???                                 0x0000000000000003 0x0 + 3
)
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSApplication 0x101a032c0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key managedObjectContext.'
*** First throw call stack:
(
0   CoreFoundation                      0x00007fff96525b06 __exceptionPreprocess + 198
1   libobjc.A.dylib                     0x00007fff915563f0 objc_exception_throw + 43
2   CoreFoundation                      0x00007fff965b9f49 -[NSException raise] + 9
3   Foundation                          0x00007fff91e518bc -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 238
4   Foundation                          0x00007fff91d99539 -[NSObject(NSKeyValueCoding) valueForKey:] + 400
5   AppKit                              0x00007fff8f41a6fb -[NSApplication(NSScripting) valueForKey:] + 514
6   Foundation                          0x00007fff91db9de8 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 341
7   AppKit                              0x00007fff8f6580d4 -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 163
8   AppKit                              0x00007fff8f665a13 -[NSObjectParameterBinder _updateObject:observedController:observedKeyPath:context:] + 1046
9   AppKit                              0x00007fff8f64f6c9 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 641
10  AppKit                              0x00007fff8f4d80ca -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1012
11  AppKit                              0x00007fff8f4b714d loadNib + 317
12  AppKit                              0x00007fff8f4b6679 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 219
13  AppKit                              0x00007fff8f4b64ae -[NSBundle(NSNibLoading) loadNibNamed:owner:topLevelObjects:] + 200
14  AppKit                              0x00007fff8f4b628e +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 360
15  AppKit                              0x00007fff8f4b2a2f NSApplicationMain + 398
16  Secrets                             0x0000000100000ea2 main + 34
17  libdyld.dylib                       0x00007fff920927e1 start + 0
18  ???                                 0x0000000000000003 0x0 + 3
)
libc++abi.dylib: terminate called throwing an exception

我究竟做错了什么?

4

2 回答 2

0
this class is not key value coding-compliant for the key managedObjectContext

这会告诉你到底出了什么问题。您将托管对象上下文绑定到文件所有者,但文件所有者显然没有托管对象上下文。

于 2013-04-04T16:44:25.550 回答
0

如果其他人发现这一点并像我一样寻找更彻底的答案,请查看 Apple Developer Documentation。此常见问题解答说明以下内容:

托管对象上下文的来源完全取决于应用程序。在使用 NSPersistentDocument 的基于 Cocoa 文档的应用程序中,持久文档通常会创建上下文,并让您通过 managedObjectContext 方法访问它。

在单窗口应用程序中,如果您使用标准项目助​​手创建项目,应用程序委托(AppDelegate 类的实例)会再次创建上下文,并允许您通过 managedObjectContext 方法访问它。然而,在这种情况下,创建上下文(以及核心数据堆栈的其余部分)的代码是显式的。它是作为模板的一部分自动为您编写的。

于 2013-10-15T04:27:39.170 回答