MagicalRecord不保存数据

oph*_*ius 5 ios magicalrecord

我正在尝试MagicalRecord的一些非常基本的实现,以获得它的悬念并遇到以下问题.

当我保存一个条目然后获取该类型的条目时,它将提供我刚刚保存的条目.但是,当我保存条目时,关闭应用程序,再次启动它,然后获取,它会变为空.

保存代码:

- (void)createTestTask{
    NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];

    Task *task = [Task createInContext:localContext];
    task.tName = @"First Task";
    task.tDescription = @"First Task created with MagicalRecord. Huzzah!";


    NSError *error;
    [localContext save:&error];
    if (error != Nil) {
        NSLog(@"%@", error.description);
    }
}
Run Code Online (Sandbox Code Playgroud)

获取代码:(如果实际保存了任何内容,我想知道所有内容)

- (void) fetchTasks{
    NSArray *tasks = [Task findAll];
    NSLog(@"Found %d tasks", [tasks count]);
}
Run Code Online (Sandbox Code Playgroud)

我确信我在这里遗漏了一些东西,但在stackoverflow或我看过的教程中似乎找不到任何东西.

欢迎任何帮助.

cas*_*ora 8

我不得不问明显的"它是否插入"问题:您是否使用其中一种+[MagicalRecord setupCoreDataStack]方法初始化Core Data Stack ?

您的堆栈是否正确初始化?也就是说,您的商店和型号是否兼容?如果不是,MagicalRecord(更合适的是,Core Data)将在没有持久存储的情况下设置整个堆栈.这很烦人,因为看起来一切都很好,直到它无法保存到商店...因为没有商店.MagicalRecord有一个+[MagicalRecord currentStack]方法可用于检查堆栈的当前状态.在设置堆栈后在调试器中尝试使用它.

假设你这样做,另一件要检查的是错误日志.如果你使用

[localContext MR_saveToPersistentStoreAndWait];
Run Code Online (Sandbox Code Playgroud)

应将任何错误记录到控制台.通常,当您在应用程序的后续运行中看不到数据时,这是因为当您认为自己调用了save时数据未保存.反过来,保存不会发生,因为您的数据未正确验证.一个常见的例子是,如果您有一个必需的属性,并且在您调用save时它仍然是零."正常"核心数据根本不记录这些问题,因此您可能认为它有效,实际上,当保存操作失败时.另一方面,MagicalRecord将捕获所有这些错误并将其记录到控制台,至少告诉您数据发生了什么.