这里的问题是,在使用 coredata 时创建一个链表来维护顺序/优先级是一个不错的选择,还是应该使用一个简单的 var 来将优先级维护为数字。
在维护数字的同时,如果将新对象插入到 N/2 位置的 N 个对象的数组中,则必须修改从 N/2+1 -> N/2 的对象的所有优先级值,这将导致如果我没记错的话,有那么多 SQL 查询。
如果存在链表,则可以维护与该实体(即“下一个”)的自关系。如果一个对象插入到 N/2 位置,则只有两个查询: 1. N/2-1 -> 下一个 -> newObj 2. newObj -> 下一个 ->N/2+1 但这里的问题在于使用 NSFetchedResultsController ,它无法使用这种关系对获取的结果进行排序,或者可以以某种方式排序吗?
请回答这两种技术中哪一种更适合上述情况。
最佳答案
最好的解决方案是使用有序的多对多关系。它使用 NSOrderedSet 来保持像数组一样的排序,但也支持像集合一样的快速成员资格测试。但这仅适用于 iOS 5.0 或 Mac OS X 10.7 或更高版本。
如果我需要支持早期版本的 iOS,我会选择带有额外排序属性的方法。这使得获取变得更加容易。链表结构可能更容易更新,但通常获取(用于显示数据)的频率更高,因此这种情况应该更容易。
如果您需要经常更新订单,则可以在订单号之间留出较大的间隙。
关于ios - CoreData链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077699/