神奇的记录,保存对象

时间:2014-06-14 13:34:35

标签: ios sqlite core-data magicalrecord

我在iOS应用中使用MR。我以与之前的应用程序相同的方式使用它,但我的对象不会保存在数据库中。

我从调试中看到,Magical Record在*.sqlite方法中正确找到setupAutoMigratingCoreDataStack数据库

以下是一些示例测试代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [MagicalRecord setupAutoMigratingCoreDataStack];

    NSManagedObjectContext *sampleContext = [NSManagedObjectContext MR_defaultContext];

    NSLog(@"hasChanges: %d", [sampleContext hasChanges]);
    self.entity = [MyEntity MR_createEntityInContext:sampleContext];
    NSLog(@"hasChanges: %d", [sampleContext hasChanges]);

    [sampleContext MR_saveOnlySelfWithCompletion:^(BOOL success, NSError *error) {
        NSLog(@"save: %d %@", success, error);
    }];

    return YES;
}

这是输出:

 hasChanges: 0
 hasChanges: 1
 save: 1 (null)

我重新打开应用程序,看到没有实体保存在本地数据库([MyEntity MR_findAll])中,我也打开* .sqlite数据库,看到ZMyEntity表是空的。

这种行为的原因是什么?

提前致谢!

1 个答案:

答案 0 :(得分:5)

如果您希望将更改下推到商店,请使用MR_saveToPersistentStore *变体。 MR使用嵌套上下文,因此,您可以选择仅保存一个级别,或保存到商店。我们将此作为一个明确的代码选择,以帮助您决定所需的选项,而无需编写所有样板代码。