所以我在现有的iPhone应用程序中使用Core Data,并且我设置了两个实体:Person和Item。我的应用程序导航的根视图(当前)显示了一个人员列表,您可以从那里向下钻取到项目。简而言之,层次结构如下所示:
人 - >项目
我想在层次结构中的Person上面添加一个新实体,名为List:
列表 - >人 - >项目
此外,我希望在启动时为他们创建用户的第一个List,并且对于已经添加的用户已分配到该列表的任何人员。
我熟悉Core Data的轻量级迁移功能。版本控制功能,所以我想我知道如何添加新的实体和关系,但我不知道如何:
如果他们之前从未有过列表功能,请在应用开始时创建一个列表记录
将所有现有人员记录设置为属于该新列表。
一种快速而肮脏的方法是将一些代码添加到我的app委托的applicationDidFinishLaunching方法,该方法执行迁移:(1)检查是否有任何列表,(2)如果没有,则创建默认值,(3) )从我的数据存储中获取所有现有的People,(4)将每个Person的list属性设置为新创建的默认列表,最后(5)保存这些更改。
我的问题是:有没有更快或更简单的方法来做所有这些?
答案 0 :(得分:1)
这就是你想要做的事情。使用NSFetchRequest
查看是否存在任何Lists
。如果没有,请创建一个。然后再做另一个请求以获取所有Person
。在此,我创建一个包含所有list
的{{1}},并将其分配给Person
,而不是分配每个NSSet
的{{1}}属性。 s Person
财产。你确实创建了一个反向属性,对吗?
这实际上是一个非常轻量级的操作,全部收费,所以我不会太担心性能。除非您有数百或数千个List
个对象,否则您的用户可能甚至都不会注意到。