解析整个目录的离线缓存(iOS应用程序)

时间:2013-05-30 10:48:52

标签: ios web-services caching parse-platform offline-caching

我正在编写一个Parse支持的应用程序,它可以下载包含在类别中的媒体对象(包含属性和相关的PFFile)的目录。 (一个对象可以在许多类别中,一个类别有很多对象)。

该应用程序在线工作非常好,通过使用Parse Cache,它还具有一些离线功能。 (即,如果您在离线时,您选择查看之前在线观看过的类别中的所有对象,则会显示一些结果)。

然而,我需要让用户在离线时能够访问他们之前在线查看过的类别中的对象。 (即能够执行未缓存的查询)。我最初写了一个启动/同步过程,它会对类别和对象执行'fetchAll' - 希望这会为我提供对所有内容的离线访问。然而,这似乎并非如此,因为当我在离线时执行新的过滤查询时,我没有得到任何结果。 (基本上是这里描述的问题:https://parse.com/questions/offline-subquery-of-a-cached-query)。

所以我的问题是,实现这一目标的最佳方法是什么?我考虑过几个不同的选择:

  • Ray Wenderlich有一个关于为核心数据创建同步处理程序的教程 - Parse。但这似乎相当复杂,并没有处理关系,这对这个问题至关重要

  • https://github.com/itsniper/FTASync - 没有深入研究

  • 每次重复使用fetchAll查询结果,然后过滤结果数组。然而,这可能会很慢,而且在离线时我也不会为每个对象提供PFRelations。

  • 在启动/同步时运行每个可能的查询,以便我始终可以离线获得结果。但是,应用程序最终会在类别中包含类别,因此这可能是合理数量的查询。

欢迎任何意见/建议。 感谢

1 个答案:

答案 0 :(得分:1)

根据我在类似情况下使用Parse的经验,我获取了缓存查询中的所有数据,然后,我必须在代码中使用NSMutableArrays对数组进行过滤/排序等。

我认为目前无法在离线缓存查询上抛出查询。

一件事:请记住,Parse查询的结果限制为1000。默认设置为100,但您可以使用setLimit进行修改。如果您有超过1000个结果,则可以使用setSkip方法将它们放入不同的查询中。

希望有所帮助