我可以打电话吗
[moc performBlockAndWait:^{
[moc save:NULL] ;
}];
同时来自不同的线程?
我添加类似于this one的崩溃,即:
Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
2011-06-15 11:36:59.864 myApp[457:607] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** Call stack at first throw:
程序在此命令崩溃:
[moc performBlockAndWait:^{
[moc save:NULL] ;
}];
当我向尽可能多的线程启动相同的进程(带有差异参数)时(在NSOperationQueue
的帮助下),此命令可能会被不同的线程同时调用。
这可能是个问题吗?或者方法performBlockAndWait:
已经处理了这个问题?
我问你这个问题,知道我是否需要创建一个能够管理对moc的保存的单例。
答案 0 :(得分:2)
-save:
。
调用-performBlockAndWait:
确实避免从错误的线程调用它。
您必须将NSError
传递给-save:
方法,您需要查看-save:
的结果以确定是否有错误发生了。这是了解错误是否发生的单一方式。传入NULL
是一件麻烦事。
您目前看到的错误是不直接导致保存。这很可能是因为你正在其他地方听NSManagedObjectContextDidSaveNotification
并在那里做错事。在代码中搜索该常量并查看与其相关的代码。