ios - CoreData链表?

标签 ios sorting core-data linked-list

这里的问题是,在使用 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/

相关文章:

algorithm - 就您的计算方式而言,冒泡排序算法的时间复杂度如何导致 O(n^2)?

JavaScript 按属性的数组值对对象数组进行排序

ios - 在核心数据中添加一个新的独立实体是否需要模型版本控制?

ios - 使用获取的结果 Controller 对删除的行进行动画处理

ios - 从 iOS 中的视频 url 或数据获取缩略图

ios - iOS 8 的 HTTP/2 支持

iOS 单元测试 : simulate Home Button press etc

iphone - 使用 UIPickerView 而不是 UITextView

ios - 应用程序如何存储/访问核心数据文件?

sorting - 如何对map reduce hadoop中的数据进行排序?