我在我的 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/