我有一个问题,我只是简单地不能找出解决。麻烦,更改不会写入正确
配置为使用核心数据我的应用程序(由Xcode中创造的AppDelegate的templatecode),进口了大量的数据在后台线程。问题是我在UI线程中对Core Data所做的所有更改都未保存到存储(有时),如果我已经运行了大量导入。所有的数据保存正确,如果我不运行导入,并且问题不一致,它是一个开/关的问题,但我已经跟踪它是导致问题的导入。
我的线程代码如下所示(简化)
-(void)startSynchronization{
self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(startSync:) object:nil];
[self.thread start];
}
-(void)startSync{
NSManagedObjectContext *importContext = [[NSManagedObjectContext alloc] init];
[importContext setPersistentStoreCoordinator:self.persistentStoreCoordinator];
[importContext setUndoManager:nil];
... import a lot of code and create thousands of core data entities..
}
的persistentStoreCoordinator(从现在起,PSC)是从应用程序的AppDelegate中的PSC,我认为这是问题。我读过多个线程应该使用单独的PSC,但我如何创建一个PSC并将其与AppDelegate模板代码中创建的核心数据文件一起分配?
导入后核心数据的读取工作正常,但是当我稍后在核心数据模型中标记我的“文档”实体中的一个作为我的最爱时,即使将此更改写入数据库我从AppDelegate调用保存在我的上下文中。
我认为全球PSC来同步多个上下文,在我的应用程序一个上下文,并在线程导入代码导入方面?
我怎样才能确保进口代码和UI代码看到相同的变化,我的店是一致的?
谢谢
/雅各布
非常感谢:)我实际上在前段时间阅读过有关ContectDidSaveNotification的内容,但我忘了所有关于它的内容,也许我当时不太明白它:(愚蠢的我..我没有实现合并模式,现在都好了:) –
@JacobRungwald如果这是正确的答案,你应该让艾米的问题正确(答案旁边的复选框)。然后你们都获得声望点。 – Tim