ios - 魔法记录,保存元素

标签 ios sqlite core-data magicalrecord

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

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

这里是一些示例测试代码:

- (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 表是空。

这种行为的原因是什么?

提前致谢!

最佳答案

如果您希望将更改推送到存储区,请使用 MR_saveToPercientStore* 变体。 MR 使用嵌套上下文,因此,您可以选择仅保存一层,或保存到存储。我们将其作为显式代码选择,以帮助您决定所需的选项,而无需编写所有样板代码。

关于ios - 魔法记录,保存元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220487/

相关文章:

ios - React Native 中的 zIndex

Django SQLite 外键不匹配错误

core-data - NSFetchedResultsController 跨关系更改跟踪

ios - 锁定 tableView 顶部的搜索栏

ios - didReceiveLocalNotification 总是在应用程序启动时触发

android - 在整个 SQLite 数据库中搜索关键字以在 Android 应用程序中实现搜索功能

core-data - -[NSCFDictionary initWithObjects :forKeys:count:]: attempt to insert nil value at objects[0] (key: sourceRelationship)

ios - 将 sectionNameKeyPath 与 NSFetchedResultsController 一起使用

iOS 显示标注而不是注释

java - 一个Android应用程序如何在一个数据库中创建和操作两个表