我正在使用一些类来处理Core Data
和远程JSON
服务之间的同步,并且在其中一个类中管理当前位于Core Data
的对象,我得到了几个随机崩溃。
方式
类
@interface XLLocalDataLoader() <NSFetchedResultsControllerDelegate>
// private properties
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
方法
// get core data object at index path
-(NSManagedObject *)objectAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath row] < [self numberOfRowsInSection:indexPath.section]){
return [self.fetchedResultsController objectAtIndexPath:indexPath];
}
return nil;
}
源代码
源代码位于GitHub -> XLDataLoader -> XLLocalDataLoader。
错误
致命异常:NSInvalidArgumentException对象的持久性存储 无法从此NSManagedObjectContext的协调器
访问
已经调查
问题
NSInvalidArgumentException
?答案 0 :(得分:2)
在&#34;装载机中使用取出的结果控制器&#34;上课似乎是错误的做法。
获取的结果控制器实际上是为了帮助您在表格视图中显示核心数据内容。显然,正常的用例是在主线程上运行它。
如果要从Web服务获取数据并在成功处理程序中解析它,这意味着它位于不同的线程上。您必须使用单独的上下文(通常是主上下文的子上下文),然后在完成操作数据后保存此上下文。这会将更改推送到主上下文,并且将通过委托通知获取的结果控制器。
错误消息似乎也表明您没有正确管理上下文。