使用 RestKit 0.2 从 CoreData 获取本地数据
Posted
技术标签:
【中文标题】使用 RestKit 0.2 从 CoreData 获取本地数据【英文标题】:Fetch Local Data from CoreData using RestKit 0.2 【发布时间】:2013-05-31 07:10:51 【问题描述】:我在从 RestKit 世界中的 CoreData 获取数据时遇到了一些问题。我能够成功地将 JSON 数据从服务器映射到我的 NSManagedObject 实体。但我不知道如何获取 RestKit 存储在本地存储中的数据。
我尝试使用下面的代码从本地存储中获取数据:
NSManagedObjectContext* context = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
// NSManagedObjectContext* context = [[[RKObjectManager sharedManager] managedObjectStore] mainQueueManagedObjectContext];
NSError *error = nil;
NSEntityDescription *entityDescription = [NSEntityDescription
entityForName:@"DTUser" inManagedObjectContext: context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSArray *dtContents = [context executeFetchRequest:request error:&error];
NSLog(@"Content :%@", dtContents);
但它返回一个空数组。
【问题讨论】:
应该加载什么以及何时运行该代码?你设置了defaultStore吗? @Wain :是的,我已经设置了默认存储。我能够正确地将 JSON 数据映射到我的核心数据实体。当我做 int count = [context countForEntityForName:@"MyEntity" predicate:nil error:nil];它给了我正确的实体计数。但是一旦我关闭(终止)应用程序并再次打开应用程序并再次执行以下代码: int count = [context countForEntityForName:@"MyEntity" predicate:nil error:nil];它返回计数为零。 你已经调试检查你有一个有效的上下文,你已经检查了获取请求错误?您是如何创建 Core Data 堆栈的? 是的,它正在返回有效的上下文。我什至尝试过 BOOL success = [context saveToPersistentStore:nil];然后数据也没有保存在数据库中。 所以可能我们需要看看模型/存储/上下文是如何创建的 【参考方案1】:使用addInMemoryPersistentStore:
不会保存到磁盘,因此当应用关闭时所有数据都消失了。看看改用addSQLitePersistentStoreAtPath:
。
【讨论】:
非常感谢您的回复。以上是关于使用 RestKit 0.2 从 CoreData 获取本地数据的主要内容,如果未能解决你的问题,请参考以下文章
“找不到给定内容的任何映射,keyPath=null”RestKit 0.2
RestKit 0.2 映射 Core Data <--> JSON 与一对多关系
在 RestKit 中使用 RKObjectManager 从 CoreData 获取
RestKit + CoreData:从CoreData缓存中排除某些对象