POST 请求后删除 CoreData 对象
Posted
技术标签:
【中文标题】POST 请求后删除 CoreData 对象【英文标题】:Delete CoreData objects after POST request 【发布时间】: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;
最干净的选择是自己删除。
【参考方案1】:
目前不支持此功能。这里最好的选择是将RKRequestMethod
属性添加到RKManagedObjectRequestOperation
,以指定允许用于托管对象清理的HTTP 方法。这将是一个简单的更改。
请在 RestKit Github 上打开一个请求该功能的问题,我们会看到将其包含在 0.21.0 中。
【讨论】:
2 年后,但您还记得为什么将其限制为仅GET
s 吗?以上是关于POST 请求后删除 CoreData 对象的主要内容,如果未能解决你的问题,请参考以下文章
带有 CORS 和 IE9 的 ASP Web API POST 请求(XDomainRequest 对象)
CORS:在成功的 OPTIONS 请求后,Firefox 不发送 POST 请求......适用于 Chrome 和 IE
斜角 | CustomPOST:我无法发出 CORS POST 请求,正文中有 json 数据对象
CORS 正在阻止 PUT、DELETE 和 POST 请求,但 GET 正在工作
如何让我的 C# API 响应来自我的 React 应用程序的 POST 请求? (CORS问题)
RestKit 对象映射 POST 响应,“CoreData:错误:在 NSManagedObject 类映射操作上调用指定初始化程序失败”