CoreData 数组

4

目前我需要设置一个使用以下结构的数据库。

  • 项目 1
    • 对象 A
      • 物品 A1
      • 物品 A2
      • 物品 A3
    • 对象 B
      • 物品 B1

我的第一个想法是创建3个实体,分别为“项目”,“对象”和“物品”,然后在每个实体中都有一个数组。 因此,每个“项目”都会有一个包含“对象”的数组,每个对象都有一个“物品”的数组。

这种方法是否可行?如果不是,有什么更正确和有效的方法来完成同样的任务?


1
你应该使用“一对多关系”来实现。 - akashivskyy
太棒了,终于搞定了。如果你把这个作为答案并附上简短的描述,我会接受它。 - Brandon Schlenker
2个回答

4
你创建三个实体的方法是正确的。这些实体之间的连接是Core Data所称的“关系”。需要注意的是,Core Data仅处理无序关系。因此,“对象A”将不会获得一个“Stuff”的NSArray,而是会有一个“Stuff”的NSSet
如果需要排序,则需要使用子实体的属性进行排序,并使用NSFetchRequest获取这些对象。例如,按一些“名称”或“日期”属性进行排序。

如果我创建一个新的可转换属性并存储到 NSSet 中,就不应该遇到任何问题了吧? - Brandon Schlenker
您可以使用符合 NSCoding 协议的任何类作为可转换属性。所有集合类都符合编码规范,只需确保您放入其中并用于键的对象也符合规范即可。 - PeyloW
任何其他类也可以用作可转换属性,只要您实现了一个NSValueTransformer子类,该子类可以将实例转换为NSData并从中转换。但这是一个相当复杂的任务,坚持使用符合NSCoding标准的类就可以涵盖99%的所需内容。 - PeyloW
太棒了,感谢你的帮助。我已经使用一对多关系使其正常工作了。 - Brandon Schlenker

4
在这种情况下,当您有两个实体并且想要它们之间的关系时,您应该尝试使用CoreData的关系。在这种情况下,您应该使用“一对多关系”。
PS:不要忘记选择您的关系删除规则! :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接