概述
- 我有一个使用核心数据的 iOS 项目
- 我正在插入一个对象,然后我想保存它。
- 我不确定保存是否有效。
- 当应用程序进入后台时,保存似乎正在工作
- 使用模拟器时,如果我单击 Xcode 上的停止按钮,保存似乎不起作用。
问题
- 保存真的发生了吗?
- 我是否因为创建了一个基于视图的应用程序而面临问题(核心数据复选框不可用)?
遵循的步骤
- 我正在使用模拟器对其进行测试。
- 插入一个对象(代码在下一节)
- 保存插入的对象(代码在下一节中)
- 我按下 Xcode 上的停止按钮停止运行应用程序
输出注意到
setBeforeSave.count = 1
setAfterSave.count = 0
- 保存前,该
NSManagedObjectContext
方法insertedObjects
返回 1 个对象 - 保存前,
NSManagedObjectContext
方法insertedObjects
返回0个对象 - 当按下 Xcode 停止按钮时,当应用程序重新启动时,以前的数据不可用(是不是因为我在 xcode 上单击了停止)
- managedObjectContext 不为零
- 该
NSManagedObjectContext
方法save:
返回YES
。
插入对象的代码
Test *test = [NSEntityDescription insertNewObjectForEntityForName:@"Test" inManagedObjectContext:self.database.managedObjectContext];
要保存的代码:
//database is a property of the type UIManagedDocument
NSSet *setBeforeSave = [self.database.managedObjectContext insertedObjects];
NSLog(@"setBeforeSave.count = %i", setBeforeSave.count);
NSError *error = nil;
if(![self.database.managedObjectContext save:&error])
NSLog(@"error = %@", error);
NSSet *setAfterSave = [self.database.managedObjectContext insertedObjects];
NSLog(@"setAfterSave.count = %i", setAfterSave.count);