tjg*_*184 6 iphone core-data fault
我们每隔一段时间就会得到"CoreData无法解决的错误".我们已阅读Apple文档,但不清楚允许保留的内容.我们一直非常谨慎地为每个线程创建一个上下文等.但是,我们的应用程序正在做的一件事是我们在UIViewControllers上保留NSManagedObjects(通常通过NSArray或NSDictionary).我猜测正在发生的事情是对象关系正在发生变化,我们没有处理适当的通知.
有没有人对Core Data的更好设计有任何建议?当我们得到错误时,我看不到我们实际上从上下文中删除了任何导致错误的东西.如果它们保持状态,是否有必要在我们的UIViewControllers上处理NSManagedObjectContextObjectsDidChangeNotification?任何建议,将不胜感激.
您可以在Core Data中注册更改通知.这将允许您在更改托管对象时更新它们.有关详细信息,请参阅Core Data Docs.您将对2种注册和响应更改的方法感兴趣:
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:(your NSManagedObjectContext)];
Run Code Online (Sandbox Code Playgroud)
mergeChanges选择器(您的方法)将调用以下方法来同步来自其他线程的任何更改.它看起来像这样:
- (void)mergeChanges:(NSNotification *)notification{
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
// Merge changes into the default context on the main thread
[context performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
}
Run Code Online (Sandbox Code Playgroud)