你如何处理在iOS中获取数据的单独线程?

时间:2013-03-07 03:08:11

标签: iphone ios objective-c core-data

您好我正在构建一个具有以下属性的应用程序:

  1. 使用核心数据进行存储
  2. 有一个Feed,一次显示一个项目
  3. 如果没有项目,app将异步调用从服务器获取
  4. 处理异步提取已被证明相当棘手。

    目前,我们将从服务器获取的项目直接存储到Core Data中。

    每次应用程序需要新项目时,我们都会查询Core Data以查找看不见的项目。

    由于不断查询核心数据,我们看到了对应用程序性能的一些重大影响。

    我们考虑过在内存中使用一个数组并保留一个索引,但是一旦我们不在项目中取出的异步方面被证明太复杂了,因为我们必须使用锁和其他并发措施来保持数组线程安全。

    对于如何减少对Core Data的总呼叫,你们有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要将持久存储的行程保持在最低限度,以便获取您希望显示的合理数量的项目。核心数据在故障管理对象中非常有效,因此内存占用不应成为问题。

如果您要显示的项目已用尽但数组中仍有一些项目,请尝试获取更多内容。

此时,如果没有结果,请使用自己的托管对象上下文调度异步队列,创建新的托管对象,保存并通知主上下文,以便合并更改。

完成后,您将返回获取新项目。