2

这里的问题是,在使用 coredata 时创建一个链表来保持顺序/优先级是一个不错的选择,还是应该只使用一个简单的 var 来将优先级保持为数字。

如果一个新对象被插入到 N/2 位置的 N 个对象的数组中,则在保持一个数字的同时,必须修改来自 N/2+1 -> N/2 的对象的所有优先级值,这将导致那么多sql 查询,如果我没记错的话。

如果存在链表,则可以保持与该实体的自我关系,例如“下一个”。如果在 N/2 位置插入一个对象,则只有两个查询: 1. N/2-1 -> next -> newObj 2. newObj -> next ->N/2+1 但这里的问题在于使用 NSFetchedResultsController 不能使用这种关系对 fetchedresults 进行排序,还是可以以某种方式?

请回答与上述情况相关的两种技术中的哪一种更好。

4

1 回答 1

2

最好的解决方案是使用有序的多对多关系。这使用了一个NSOrderedSet像数组一样保持排序但也支持像集合一样的快速成员资格测试。这仅适用于 iOS 5.0 或 Mac OS X 10.7 或更高版本。

如果我需要支持早期版本的 iOS,我会选择带有额外属性的方法来进行排序。这使得获取更容易。链表结构可能更容易更新,但通常会更频繁地获取(用于显示数据),所以这种情况应该更容易。

如果您需要经常更新您的订单,您可以在订单号之间留下很大的空白。

于 2012-08-22T19:15:11.153 回答