应用程序重新启动后,核心数据中的数据未正确返回。获取特定记录的获取请求也会失败。重新启动应用程序后,FetchRequestController 不会抓取任何记录。
我正在使用encrypted-core-data来保护我的项目中的数据。我能够解析数据并将其保存到 managedObjectContext。我的代码看起来像这样
for (NSDictionary *data in categories) {
//Use MagicRecord api to get a record
CMCategories *Obj = [CMCategories MR_findFirstByAttribute:@"uniqueId"
withValue:[data valueForKey:@"id"]
inContext:managedObjectContext];
if (!Obj) {
Obj = [CMCategories MR_createEntityInContext:managedObjectContext];
}
Obj.name = [data valueForKey:@"CategoryName"];
Obj.language = [data valueForKey:@"LanguageCode"];
Obj.uniqueId = [data valueForKey:@"id"];
}
NSError *error = nil;
if (![_managedObjectContext save:&error]) {
NSLog(@"Error saving context: %@\n%@", [error localizedDescription], [error userInfo]);
abort();
}
该代码可以正常工作。我的persistentStoreCoordinator
和managedObjectContext
代码是一样的
当我在关闭应用程序之前打印 obj 时,它会打印
2016-01-24 23:59:11.806 Chare Dev[10556:158617] <CMCategories: 0x7feb00d24a90> (entity: CMCategories; id: 0x7feb02ef5890 <x-coredata://B947ACD3-E248-4D4F-B81E-236E100BB34D/CMCategories/p5> ; data: {
channels = (
);
language = en;
name = Professional;
order = 0;
uniqueId = 15;
})
但是在应用程序重新启动后,当我们获取所有对象并打印时,它会像这样打印
2016-01-24 23:59:11.795 Chare Dev[10556:158617] <CMCategories: 0x7feb02de4aa0> (entity: CMCategories; id: 0x7feb02de5c10 <x-coredata://B947ACD3-E248-4D4F-B81E-236E100BB34D/CMCategories/p2> ; data: {
channels = "<relationship fault: 0x7feb02922450 'channels'>";
language = nil;
name = nil;
order = nil;
uniqueId = nil;
})
如果我试图获得财产 NSString *string = obj.uniqueId
2016-01-24 23:59:11.795 Chare Dev[10556:158617] CoreData:警告:NSManagedObjectContext 委托覆盖错误处理行为以静默删除 ID 为“0x7feb02de5c10”的对象,并用 nil/0 替换所有属性值而不是抛出
如果我使用NSSQLiteStoreType
而不是EncryptedStoreType
一切正常。你能指导我我做错了什么吗?
因为由于上述问题,数据库记录被多次添加,并且获取请求无法获取具有 uniqueId 的托管对象。