在 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 获取的主要内容,如果未能解决你的问题,请参考以下文章

使用 RestKit 在 post 请求中寻求帮助

如何在请求中使用 NSStrings 映射 NSArray (RESTKit)

如何在使用 RestKit 的项目中设计类?

在 RestKit 中使用 RKObjectManager 从 CoreData 获取

在 Swift 中使用 RestKit 和 CoreData

你如何在 RestKit 0.20 中使用 RKDotNetDateFormatter?