Core data 在核心数据一对多关系中具有多个同一对象的时间

Core data 在核心数据一对多关系中具有多个同一对象的时间,core-data,nsarray,magicalrecord,nsset,Core Data,Nsarray,Magicalrecord,Nsset,我的核心数据模型中有两个实体:图书馆和书籍。它们通过图书馆和书籍之间的多对多关系而联系在一起。 然而,在我的示例中,我的库中有两本完全相同的书,当我尝试将它们添加到库中时,只有一本出现。我搜索了一下,发现在Library对象中,书籍存储为NSSet 有人知道我如何将书籍存储在NSArray中吗?你不能(除非你去掉Book实体并使用可转换属性,但这不是一个好的解决方案) 显而易见的选择是在Book实体中添加一个count属性,这样您就可以记录您有多少本书了。这对你的其他设计有什么影响是你需要考虑的

我的核心数据模型中有两个实体:图书馆和书籍。它们通过图书馆和书籍之间的多对多关系而联系在一起。
然而,在我的示例中,我的库中有两本完全相同的书,当我尝试将它们添加到库中时,只有一本出现。我搜索了一下,发现在Library对象中,书籍存储为
NSSet

有人知道我如何将书籍存储在
NSArray
中吗?

你不能(除非你去掉
Book
实体并使用可转换属性,但这不是一个好的解决方案)


显而易见的选择是在
Book
实体中添加一个
count
属性,这样您就可以记录您有多少本书了。这对你的其他设计有什么影响是你需要考虑的。

在XCODE侧栏中,有一个名为“有序关系”的复选框,但是正如WAIN所提到的,这不会解决重复的问题。但是,它会使它将这些书保存在一个有序的集合中(
ensorderedset


我将创建一个新的实体,
LibraryBook
,它与
Book
有一对一的关系,与
库有一对一的关系。你可以在一个
库中有两本
图书馆图书
,两本都指向同一本
图书

你仍然不能在一个有序的集合中有重复的图书。好吧,这是否是问题的一部分是有争议的,没有明确要求顺序,重复的是抱歉的,误解了问题。更新了!是的,我实际上是问复制品,而不是订单。抱歉,我的问题不清楚。
nsoredset
NSArray
不同,它有顺序,但它仍然是一个集合,集合不能包含重复项。基于实体的解决方案很好(虽然可能有点重,这取决于重复的频率)。是的,这是我一直在考虑的解决方案,但我希望有更好的解决方案。您能解释一下什么是可转换属性吗?在信息检查器中(您将类型设置为string/integer/etc),您可以选择transformable。结果是二进制数据存储。所以你不能在任何谓词中使用它。这不是一个好的选择……是的。谢谢你的回答!