2012-08-22 45 views
0

这里的问题是,在使用coredata时,使链表保持顺序/优先级是否是一个很好的选择,或者应该使用简单的var来将优先级保持为数字。CoreData LinkedList?

如果在N/2位置的N个对象的数组中插入一个新对象,则保留一个数字,那么必须修改N/2 + 1 - > N/2中对象的所有优先级值,如果我没有弄错,会导致很多sql查询。

如果存在链接列表,那么可以维护该实体的自我关系,称为“下一个”。如果在N/2位置插入对象,则只有两个查询: 1. N/2-1 - > next - > newObj 2. newObj - > next - > N/2 + 1 但是,问题在于使用NSFetchedResultsController不能使用这种关系对提取的结果进行排序,或者可以在某种程度上进行排序吗?

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

+0

你能详细说明一下吗? – manishnath

+0

雅,但你将如何保持NSArray的优先级没有索引,或者即使你有一个索引,它会触发多少个查询将优先级更新? – manishnath

回答

2

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

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

如果您需要经常更新您的订购,您可以在订购号码之间留下很大差距。

+0

谢谢斯文..离开间隙听起来不错。我想这种方式我不需要更新所有其余的索引,直到我发现两个对象争夺同一地点之间的冲突:) – manishnath