- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在背景上下文中使用 Core Data 有一段时间了,想知道为什么每个人都建议使用 NSManagedObjectContextDidSaveNotification
从后台合并到主上下文。我创建了一个测试项目,其中包含一个 NSPersistentStoreCoordinator
、一个主上下文和一个后台上下文。这是初始化的代码片段:
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
- (NSManagedObjectContext *)backgroundContext {
if (_backgroundContext != nil) {
return _backgroundContext;
}
_backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
_backgroundContext.persistentStoreCoordinator = self.persistentStoreCoordinator;
return _backgroundContext;
}
到现在为止,我会这样收听保存通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:self.backgroundContext];
但我意识到,是否从该通知中合并并不重要。我可以编辑和保存任一上下文,而另一上下文会在几秒钟后自动合并。
所以。我的问题是,为什么我什至需要 NSManagedObjectContextDidSaveNotification
?
最佳答案
您的上下文不相关。它们都是附加到同一个持久存储协调器的根上下文。
对持久存储的更改会自动推送到与其关联的根上下文(这就是为什么您不需要处理 NSManagedObjectContextDidSaveNotification
通知的原因。)
NSManagedObjectContextDidSaveNotification
在处理更复杂的上下文祖先时很有用,因为中级上下文在更改时不会自动通知其所有子级。
例如,查看 Cadmium 的架构图 (https://github.com/jmfieldman/Cadmium)。当后台子上下文保存到编写器上下文时,主上下文必须在主线程上处理 NSManagedObjectContextDidSaveNotification
以合并更新。
关于ios - NSManagedObjectContextDidSaveNotification 没用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581441/
我在背景上下文中使用 Core Data 有一段时间了,想知道为什么每个人都建议使用 NSManagedObjectContextDidSaveNotification 从后台合并到主上下文。我创建了
您好,我有一个 FriendsViewController,我在其中显示从 coreData 获取的 friend 记录。我有另一个 View Controller AddFriendViewCont
我的应用程序中有 2 个独立的数据存储,它们同时进入后台线程。因此,我有以下代码来设置它: NSNotificationCenter *notificationCenter = [NSNotifica
好吧,我有一个非常棘手的问题,我花了几天时间来理解它,并且知道我不知道如何解决它。 我有一个从具有不同上下文的不同线程更新的 CoreData 数据库。我的问题是,有时 NSManagedObject
我想知道是否有可能以某种方式从 NSManagedObjectContextDidSaveNotification 中查看保存的 NSManagedObject 类? 我试过这样的: [[notifi
我有一个有趣的问题,我似乎无法找到解决方案 - 我有两个托管对象上下文,'main' 和 'backing'。 'Main' 使用 NSMainQueueConcurrencyType 创建,'bac
我有一个 NSFetchedResultsController,它使用谓词获取对象: isTrash == NO 大多数情况下这会按预期工作,但是当对象未被回收时,获取的结果 Controller 不
我遇到了一种情况,我在主线程中对 NSManagedObject 的属性进行了一些更改。它属于应用程序的主 ManagedObjectContext。 我的应用程序确实启用了下载数据的线程,每个线程都
我遇到了 NSManagedObject 的问题,它没有反射(reflect)在后台线程保存其上下文后对持久存储所做的更改。 设置 在一个简单的测试应用程序中,我有一个单独的窗口,其中列出了我的核心数
我是一名优秀的程序员,十分优秀!