在 RestKit 中使用 RKObjectManager 从 CoreData 获取
Posted
技术标签:
【中文标题】在 RestKit 中使用 RKObjectManager 从 CoreData 获取【英文标题】:Fetching from CoreData with RKObjectManager in RestKit 【发布时间】:2014-02-24 19:37:56 【问题描述】:我试图了解 RestKit 获取对象的工作原理。据我了解,当我打电话时,
[[RKObjectManager sharedManager] getObjectsAtPath:@"/mypath/objects" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
// Use objects that are returned.
failure:^(RKObjectRequestOperation *operation, NSError *error)
// Handle error
];
Restkit 将尝试从 web 服务加载指定路径的对象,并在检索到对象后调用成功块。它还将在调用成功块之前使用我提供的映射更新核心数据对象图。如果我只想要核心数据中的对象怎么办?如何访问这些对象?我是否应该使用 sharedManager 的 managedObjectStore 的 mainQueueManagedObjectContext 直接在其上执行 NSFetchRequests 并且如果我想更新 Core Data 持久存储,则只调用getObjectsAtPath:parameters:success:failure:
?
【问题讨论】:
【参考方案1】:据我了解
是的,基本上。 RestKit 将在指定路径从服务器获取数据,对其进行反序列化并根据映射和响应代码/描述符将其映射到对象中。如果您已指定使用 Core Data,那么它将在调用成功块之前保存结果。
如果我只想要核心数据中的对象怎么办
然后你不使用 RestKit,你只需访问 mainQueueManagedObjectContext
,通常使用 NSFetchedResultsController
。
【讨论】:
轰隆隆,正是我想要的。这证实了我的猜想。感谢您的回答。 一个问题@Wain,如果我们这样做,我想我们会阻塞主线程(即用户界面)一段时间,不是吗?除此之外,如果我们使用它访问数据并且同时有一个正在进行的请求呢?谢谢。 @Ricardo RestKit 将为您创建后台线程来运行网络请求和映射操作以上是关于在 RestKit 中使用 RKObjectManager 从 CoreData 获取的主要内容,如果未能解决你的问题,请参考以下文章
如何在请求中使用 NSStrings 映射 NSArray (RESTKit)
在 RestKit 中使用 RKObjectManager 从 CoreData 获取