如何在 Core Data 中按顺序存储数据? [复制]
Posted
技术标签:
【中文标题】如何在 Core Data 中按顺序存储数据? [复制]【英文标题】:How to store data sequentially in Core Data? [duplicate] 【发布时间】: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 的回答中,我可以看到这可以通过比添加 id
s 更好的方式来完成。
对所引用问题的接受答案也提到了有序关系:“如果您可以针对 ios 5,那么您可以将新的 NSOrderedSet 功能用于任意有序的核心数据关系”我>。这正是 Erik 下面的建议。 – 添加一个 id 字段也是一个很好的解决方案,并且有它的优势,因为有序的关系可能很棘手。
【参考方案1】:
如果您选择关系并在数据模型检查器中查看,您有一个选项arrangement
。如果你设置它,你将有一个 NSOrderedSet 来维持秩序。
【讨论】:
我必须再次生成NSManagedObject
子类,对吧?
是或者只是更新现有的。将NSSet
换成NSOrderedSet
谢谢ji先生我的问题已经解决了。以上是关于如何在 Core Data 中按顺序存储数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章