***尝试截断时在+ 中断言失败

MagicalRecord版本2.0.7,我得到一个exception

每当我启动应用程序,它崩溃与此exception:

*** Assertion failure in +[NSManagedObjectContext MR_defaultContext] 

我正在像这样configurationcoredata:

在appdelegate didFinishLaunchingWithOptions方法中:

 [MagicalRecord setupCoreDataStack]; 

在appdelegate applicationWillTerminate中:

 [MagicalRecord cleanUp]; 

我注意到只有当我试图截断实体中的所有logging时才会发生崩溃:

 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文件中

把你的核心数据设置[MagicalRecord setupCoreDataStackWithStoreNamed:@"Model"]; 在应用程序委托方法的顶部。

所以,如果你指定了一个上下文(localContext),并且你正在崩溃在defaultContext访问器中,还有其他的东西在进行。 设置堆栈后,默认上下文不应该为零。 你初始化后是否自己validation过? 尝试使用

 +[MagicalRecord currentStack] 

看是否一切正常。

在truncateAllInContext:方法中要检查的一件事是,忽略你的本地上下文,只是要求默认? 如果是这样的话,那么这是MagicalRecord中的一个错误,并且可能在更新的版本中被修复(最新版本是2.1)

是的,如果可以的话,升级MagicalRecord。 我遇到了2.1版已经消失的各种问题。 其中至less有一个是MagicalRecord发现的Core Data中的一个bug。