调用返回多个集合时的 ​​NSFetchRequest

Posted

技术标签:

【中文标题】调用返回多个集合时的 ​​NSFetchRequest【英文标题】:NSFetchRequest when a call returns multiple collections 【发布时间】:2014-04-28 00:47:34 【问题描述】:

我正在尝试设置 RestKit 以删除服务器上不存在但仍存在于本地缓存中的孤立对象,使用 NSFetchRequests 如RKManagedObjectRequestOperation 的文档中所述。

如果我有一个调用返回多个不同对象类型的集合,每个集合都使用键进行映射,RestKit 是否足够聪明来处理这个问题?还是仅适用于返回单一类型对象的调用?例如:

网址:/users?accessToken=someToken

回复:


    users: [],
    collection1: [],
    collection2: [],
    collection3: []

存储在每个集合中的对象类型在我的数据模型中是不同的实体。如何编写一个 NSFetchRequest 来允许我从本地缓存中删除不再位于 collection1collection2collection3 中的对象?

【问题讨论】:

【参考方案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 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )

MyBatis传入多个参数 ,List集合

NSFetchRequest 在第一次运行时返回对象,但以后不返回

通过 JDBC 调用 Sybase 存储过程时的空结果集

多线程和线程池