rob*_*408 1 core-data objective-c nsmanagedobjectcontext
我有一堆NSOperations和他们自己的NSManagedObjectContexts对我的Core Data存储进行了更改并保存并成功地将他们的更改变为主线程的NSManagedObjectContext.我知道这个.现在我希望在主要上下文更新时通知前UIViewController.所以我...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(refreshData:)
name:NSManagedObjectContextDidSaveNotification
object:[NSManagedObject mainThreadManagedObjectContext]];
}
Run Code Online (Sandbox Code Playgroud)
但是,我不认为在合并后台线程的更改后,主线程的NSManagedObjectContext会发布自己的任何通知.我试图在文档中的哪个地方找到Apple说我应该在告诉主要线程合并更改或其他一些之后发布我自己,但没有运气.为了在我的NSOperation中额外参考,我有......
+ (void)mergeChanges:(NSNotification *)notification
{
NSManagedObjectContext *managedObjectContext = [self mainThreadManagedObjectContext];
[managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
}
+ (NSManagedObjectContext *)adHocManagedObjectContext
{
NSManagedObjectContext *adHocManagedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] adHocManagedObjectContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:adHocManagedObjectContext];
return adHocManagedObjectContext;
}
Run Code Online (Sandbox Code Playgroud)
我是否希望听到主线程的NSManagedObjectContext有关它的保存,或者我应该在mergeChangesFromContextDidSaveNotification后发布我自己的通知:?
mergeChangesFromContextDidSaveNotification: 不发布NSManagedObjectContextDidSaveNotification,因为mergeChangesFromContextDidSaveNotification:不告诉上下文保存.
也许你的前线UIViewController应该观察NSManagedObjectContextObjectsDidChangeNotification.
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |