【问题标题】:Need to read 10,000 records from Core Data需要从 Core Data 中读取 10,000 条记录
【发布时间】:2017-08-03 13:12:50
【问题描述】:

我目前的情况是,我一次不会从核心数据中获取超过 100 条记录,但这会随着时间的推移而缓慢增长,我想让应用程序为 10000 条记录等情况做好准备,我是否应该实施这种处理记录异步或同步仍将在几分之一秒内返回具有 10000 条记录的数据?我没有处理 Core Data 堆栈上的大数据的经验。

【问题讨论】:

  • 您在哪里显示这些数据?表格视图?
  • @jarora 主要是表格视图
  • 请说明投反对票的原因。
  • @jarora 可能是他们无法回答:P,或者他们可能想查看一长串代码但仍然不回答。有时我觉得 Stackoverflow 充满了巨魔。
  • 这个问题仍然与编程非常相关,如果不是那么请建议我应该在哪里问这个。

标签: ios swift core-data


【解决方案1】:

您应该使用 FRC(NSFetchedResultsController) 以及 FRC 的 NSFetchRequest 的 batchSize 属性,该属性限制给定时间内存中核心数据对象的数量。

请参考苹果文档here。 用法可以查看here。

编辑: 您可以使用 fetchRequest 对核心数据对象进行处理。此外,您可以对列使用索引来提高查询的性能。

【讨论】:

  • 基本上我不想将结果集直接附加到 TableView 因为我们在显示之前没有进行一些处理。
  • 没关系。您可以在 cellForRowAtIndexPath 中进行处理。您可以从 fetchedResultsController 获取该 indexPath 处的 coredata 对象,然后对其进行修改以适应视图规范。
  • 不,我的意思是要求首先收集数据至少 1000 条记录,然后进行一些处理然后显示,因此出于这个和其他一些原因,例如我想保持模型和视图之间的松散耦合,所以真的不喜欢用它。
  • 如果你在内存中获取 1000 个对象,你就是在自找麻烦。我的建议是通过使用所需谓词进行 fetchRequest 来进行该处理。例如,计算表中前 1000 个对象中有多少设置为 YES(这可以是您的谓词)。
  • 好吧,即使是这样,这应该是同步还是异步操作?
猜你喜欢
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多