【发布时间】:2014-04-25 03:16:07
【问题描述】:
OS X 编程新手。从 Xcode 模板开始,该模板用于使用 Core Data 的基于文档的应用程序。
在我的默认 Document.xib 中,我创建了一个 View,我使用自定义 ViewController 对其进行控制。然后我在 Document.xib 中创建了一个Managed Object Context 并创建了两个出口,一个到Document.h:
@property (strong) IBOutlet NSManagedObjectContext *myManagedObjectContext;
一到ViewController.h:
@property (weak) IBOutlet NSManagedObjectContext *myManagedObjectContext;
在windowControllerDidLoad 在Document.m 中,然后我添加了self.myManagedObjectContext = [self managedObjectContext]。
按照 ghostfly 的建议 (could not locate an NSManagedObjectModel for entity name) 我补充说:
NSLog(@"Context: %@",self.myManagedObjectContext);
NSLog(@"PS Coord : %@",self.myManagedObjectContext.persistentStoreCoordinator);
NSLog(@"MOM : %@", self.myManagedObjectContext.persistentStoreCoordinator.managedObjectModel);
NSLog(@"Entities : %@",[[self.myManagedObjectContext.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"name"]);
到 windowControllerDidLoad 中的 Document.m 以及我的 ViewController 的 awakeFromNib 中。在 Document.m 中似乎一切正常:所有 NSLog 语句看起来都正确,我也可以将 Entities 添加到我的 NSManagedObjectContext 但在 ViewController 中,只有第一个 NSLog 语句有效,其余的返回(null)。
我的问题:这里出了什么问题,我是否以正确的方式解决这个问题?
其他各种问题似乎建议将 AppDelegate 添加到 MainMenu.xib,但我不确定这在基于文档的应用程序中如何工作(例如,我希望每个文档都有一个单独的NSManagedObjectContext,但是如果我使用 AppDelegate,那么它们肯定都是一样的吗?),或者即使是推荐的,因为一些教程表明这是明确的不是如何做到这一点(例如这里@ 987654322@)。非常感谢您的帮助!谢谢。
【问题讨论】:
-
为什么要在XIB中创建托管对象上下文?
NSPersistentDocument已经设置了一个供你使用! -
Volker:可能是因为我不明白我在做什么!我可以看到 NSPersistentDocument 为我设置了一个,但我不知道如何从我在 Document.xib 中使用的 ViewController 访问它...
标签: objective-c xcode macos cocoa core-data