我在MagicalRecord 2.0.7版本中获得了一个例外
每当我启动应用程序时,它都会因此例外而崩溃:
*** Assertion failure in +[NSManagedObjectContext MR_defaultContext]
我正在配置这样的coredata:
在appdelegate didFinishLaunchingWithOptions方法:
[MagicalRecord setupCoreDataStack];
在appdelegate applicationWillTerminate:
[MagicalRecord cleanUp];
我注意到只有当我尝试截断实体中的所有记录时才会发生崩溃:
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[Song MR_truncateAllInContext:localContext];
我错过了什么吗?上面采用的方法是错误的吗?
修改
崩溃发生在这一行:
+ (NSManagedObjectContext *) MR_defaultContext
{
@synchronized (self)
{
NSAssert(defaultManagedObjectContext_ != nil, @"Default Context is nil! Did you forget to initialize the Core Data Stack?");//this line
return defaultManagedObjectContext_;
}
}
在NSMnagedObjectContext + MagicalRecord.m文件中
答案 0 :(得分:5)
将您的核心数据设置为 [MagicalRecord setupCoreDataStackWithStoreNamed:@"Model"];
置于app delegate方法之上。
答案 1 :(得分:1)
因此,如果您指定了一个上下文(localContext)并且您在defaultContext访问器中崩溃,那么还有其他内容。设置堆栈后,默认上下文不应为nil。初始化后你自己验证了吗?尝试使用
+[MagicalRecord currentStack]
查看是否所有内容都已正确设置。
在truncateAllInContext:方法中检查的一件事是忽略你的本地上下文而只是要求默认值?如果是这种情况,那么这是MagicalRecord中的一个错误,可能会在较新版本中修复(最新版本为2.1)
答案 2 :(得分:0)
是的,如果可以的话,升级MagicalRecord。我遇到了2.1中已经消失的各种问题。其中至少有一个是Core Data中的一个错误,MagicalRecord设法搔痒。