Swift 核心数据:fetchBatchSize 与 fetchOffset

Aru*_*hna 3 core-data swift

我是 ios swift 编程的新手。我的应用程序中有大量工作数据(核心数据),我想限制它。我遇到了两个选项 fetchBatchSize 和 fetchOffset。

在官方文档中,两者都提供相同的用途

fetchBatchSize 您可以使用此功能来限制应用程序中的工作数据集。与 fetchLimit 结合使用,您可以创建任意结果集的子范围。

fetchOffset 这个属性可以用来限制数据的工作集。与 fetchLimit 结合使用,您可以创建任意结果集的子范围。

两者有什么区别?

Lad*_*lav 5

假设您在 Core Data 中有以下对象 - A、B、C、D、E、F、G

如果您尝试获取您获得的所有对象 [A, B, C, D, E, F, G]

如果您将 an 设置fetchOffset为 2,您将获得 [C, D, E, F, G],因此它将在指定的fetchOffset.

fetchBatchSize使用 Core Data 以便不会一次获取所有对象,假设在此示例中设置fetchBatchSize为 2,它将获取前两个对象,因此A and B其余将是错误,当您尝试访问 C 核心数据时将满足故障和得到C and D为好。

假设您有 1000 个名称,并且将它们列在一个中,UITableView您一次只能显示 20 个名称,设置fetchBatchSize为比全屏名称高一点的值是有意义的,因此如果用户从不滚动Core Data仅获取前 30 个对象,例如,只要用户向下滚动Core Data将在接下来的 30 和接下来的 30 个对象中获取...

  • 我想你可以用 `fetchOffset` 和 `fetchLimit` 实现同样的效果,但是如果用户想要更多数据,你将不得不自己调用 `performFetch`,使用 `fetchBatchSize` 你可以获取所有数据并调用`performFetch` 只执行一次,而 CoreData 会在需要时从 SQL 存储中丢失对象中的引擎盖错误,所以我会说这是一个巨大的差异,一个你必须做所有的工作,第二个 CoreData 为你做.. .so 第二个获胜 ;) (4认同)