我在整个 iPad 应用程序中都使用 MagicalRecord;我有一行代码,间歇性地抛出一个异常:
+entityForName: nil 不是搜索实体名称的合法 NSManagedObjectContext 参数...
我理解是因为 NSManagedObjectContext 是nil。该应用程序运行了很长一段时间,直到此代码行和其他类似代码(使用不同的实体)触发错误:
[apptDataArray addObjectsFromArray:[AppointmentInfo MR_findAllWithPredicate:predicate]];
NSManagedObjectContext 在 AppDelegate.h 中定义为
NSManagedObjectContext *defaultContext;
并在 AppDelegate.m 中进一步作为
defaultContext = [NSManagedObjectContext MR_defaultContext];
它在整个应用程序中使用。在我问过的另一个 SO 问题中,Saul Mora 是这样说的:
通过每次保存时创建一个新的上下文,而不是重新使用上下文,您将保证不会跨线程,并且不会在 1% 的时间内使您的应用程序崩溃。
会不会是我的保存以某种方式破坏了defaultContext对象?如果是这样,为每个 MR 方法调用创建一个新的 defaultContext 是否明智?