调用返回多个集合时的 NSFetchRequest
Posted
技术标签:
【中文标题】调用返回多个集合时的 NSFetchRequest【英文标题】:NSFetchRequest when a call returns multiple collections 【发布时间】:2014-04-28 00:47:34 【问题描述】:我正在尝试设置 RestKit 以删除服务器上不存在但仍存在于本地缓存中的孤立对象,使用 NSFetchRequest
s 如RKManagedObjectRequestOperation
的文档中所述。
如果我有一个调用返回多个不同对象类型的集合,每个集合都使用键进行映射,RestKit 是否足够聪明来处理这个问题?还是仅适用于返回单一类型对象的调用?例如:
网址:/users?accessToken=someToken
回复:
users: [],
collection1: [],
collection2: [],
collection3: []
存储在每个集合中的对象类型在我的数据模型中是不同的实体。如何编写一个 NSFetchRequest 来允许我从本地缓存中删除不再位于 collection1
、collection2
或 collection3
中的对象?
【问题讨论】:
【参考方案1】:它和你做的一样聪明,但是,正如你从 docs/block 签名中看到的那样,你需要在 URL 中(或在数据存储中先前映射的内容中)有一些信息,以便你决定怎么办。
如果您的所有信息都在 JSON 响应正文中,那么使用 fetch 请求块可能不适用于您,您可能需要根据映射结果执行您自己的 fetch 和删除(这将在 context 之后运行被保存而不是之前)。
【讨论】:
我的问题可能还不清楚。我会详细说明。 另外,我最终还是根据mappingResult
的内容编写了自己的缓存清理程序,但我想看看是否有可能在公认的 RestKit 范例中做我想做的事情。
问题是:对于请求/users...
,你总是得到collection1/2/3,还是其他一些任意的collection?你能总是返回一个包含所有这些集合(并且它们是同一个实体)的 fetch 吗? RestKit 提供了这种删除功能,但它在许多方面受到限制......
它们不是同一个实体。我认为这会阻止我使用此功能?
是的,获取请求是特定于实体类型的,RestKit 只会为匹配的路径运行一个获取请求块。以上是关于调用返回多个集合时的 NSFetchRequest的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )
Kotlin 协程Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )