【发布时间】:2013-09-06 10:18:34
【问题描述】:
我正在使用带有 CoreData 的 RestKit 0.20.3 来缓存我的 Web 服务的结果。
我需要从 CoreData 中删除所有不在响应中的对象,所以我使用[RKObjectManager addFetchRequestBlock]。当我执行 GET 请求时一切正常,但是当我执行 POST 请求时,CoreData 中的对象不会被删除,我认为是因为 deleteLocalObjectsMissingFromMappingResult 仅适用于 GET 请求。
我知道,在 RESTfull 架构中,POST 请求用于更新服务器端的实体,但在我的例子中,Web 服务提供搜索功能并在 POST 中采用许多可选参数。
有没有办法配置 RestKit 以在 POST 请求之后执行删除?
如果不需要,我需要在每个请求结束时手动执行删除还是有其他更好的方法?
【问题讨论】:
-
你调试看到
deleteLocalObjectsMissingFromMappingResult没有被调用?我希望它应该被调用,因为它是映射操作的一部分。 -
deleteLocalObjectsMissingFromMappingResult 的主体包含以下代码,如果非 GET 请求
if (! [[self.HTTPRequestOperation.request.HTTPMethod uppercaseString] isEqualToString:@"GET"]) { RKLogDebug(@"Skipping deletion of orphaned objects: only performed for GET requests."); return YES; } -
最干净的选择是自己删除。
标签: ios core-data restkit restkit-0.20