首页 > 解决方案 > 如何有效地重新排序持久表索引?

问题描述

我在 UITableView 中有一个列表,我将让用户重新排序并将此订单保留在 Core Data / CloudKit 中。如果列表中的每个项目都有一个存储在 Int 类型数据库中的索引值,那么在有人将单元格向上移动到列表中的第一项的情况下,我将不得不立即重写整个列表的索引值(最差案例场景)。我想我可以通过使用 Double 作为索引值并简单地将插入项的索引值设置为它插入的两个索引之间的中间值来避免对整个数据库表内容的更新。

这似乎是一个解决方案,直到您不断将项目移动到相同的位置,例如,不断地在列表的第一个和第二个项目之间插入项目。对于索引值为 1、2、3 的 3 个项目的列表,您只需在项目 1 和 2 之间移动项目 3 13 次,即可使用 Swift Double 达到该算法的极限。

所以要解决这个问题,我是否应该实施这个解决方案,然后还实施一个重新索引操作,一旦应用程序活动不那么忙并且能够快速执行更昂贵的操作,就会将数据库索引值重写为 Int 精度。

我真的想不出任何其他方法来解决这个问题。

标签: iosalgorithmuitableview

解决方案


推荐阅读