***尝试截断时+ [NSManagedObjectContext MR_defaultContext]中的断言失败

时间:2013-07-29 07:22:26

标签: ios magicalrecord

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

3 个答案:

答案 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设法搔痒。