【发布时间】:2016-05-20 11:20:06
【问题描述】:
我有一个名为OperationEntity 的实体。它与OperationInput 有一对多关系。
我有一个表格视图控制器,它显示所有已保存的OperationEntity。当用户点击其中一个单元格时,将执行转到另一个表视图控制器的 segue。该表视图控制器显示所有关联的 OperationInput 和 OperationEntity。
在 Xcode 为我生成的 NSManagedObject 子类中,availableInputs 属性被声明为 NSSet? 类型。我知道集合不保持其元素的顺序。这意味着我可以按以下顺序保存输入:
a
b
c
但是当我取回它时,我可能会按照这个顺序取回它
c
a
b
但我希望输入的顺序与保存时的顺序相同!
我该如何解决这个问题?
我曾想过将id 属性添加到OperationInput。每次我保存一个新的,我都会增加 id。当我获取它时,我根据 id 对数组进行排序。但我相信还有比这更好的方法。
也许用蛮力将NSSet? 更改为NSArray??这行不通,不是吗?
令人惊讶的是,我还没有发现有人在 Stack Overflow 上提问!
【问题讨论】:
-
这个已经被问过和回答过。搜索
[core-data] preserve order会找到更多答案。 -
@MartinR 但是这个问题似乎已经过时了。从 Erik Johansson 的回答中,我可以看到这可以通过比添加
ids 更好的方式来完成。 -
对所引用问题的接受答案也提到了有序关系:“如果您可以针对 iOS 5,那么您可以将新的 NSOrderedSet 功能用于任意有序的核心数据关系”我>。这正是 Erik 下面的建议。 – 添加一个 id 字段也是一个很好的解决方案,并且有它的优势,因为有序的关系可能很棘手。