【发布时间】:2011-09-29 06:29:19
【问题描述】:
我有一个 NSOperation 子类,这是主要方法:
(void)main
{
NSAutoreleasePool *Pool = [[NSAutoreleasePool alloc] init];
managedObjectContext = [NSManagedObjectContext contextThatNotifiesDefaultContextOnMainThread];
Message *message = (Message *) [managedObjectContext objectWithID:self.messageID];
message.status = [NSNumber numberWithInt:SKMessageSendStateStart];
[message save];
[self send];
[self finish];
[Pool drain];
}
我这样定义 fetchResultController 和 defaultContext:
(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[MagicalRecordHelpers setupCoreDataStackWithStoreNamed:@"Shark"];
self.context = [NSManagedObjectContext context];
[NSManagedObjectContext setDefaultContext:self.context];
self.fetchController = [Message fetchRequestAllGroupedBy:nil withPredicate:nil sortedBy:@"text" ascending:YES];
[self.fetchController setDelegate:self];
[self.fetchController performFetch:nil];
}
每次我调用 [message save] 时,控制台注销: -NSManagedObjectContext(MagicalRecord) mergeChangesFromNotification:合并更改到 * DEFAULT 主线程上的上下文 *
但是 NSFetchedResultsControllerDelegate 永远不会被调用! 这是否意味着我将 FetchedResultsController 设置错了?一世 我完全糊涂了。
提前致谢。
【问题讨论】:
-
为什么要使用多个托管对象上下文?
-
在多个线程上使用核心数据需要多个托管对象上下文。 developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…
标签: objective-c core-data magicalrecord