2010-11-04 29 views
0

所以我在现有的iPhone应用程序中使用核心数据,并且设置了两个实体:人员和项目。我的应用程序导航(当前)的根视图显示了一个人员列表,并从那里向下钻取到项目。总之,层次结构如下所示:如何在iOS上的Core Data中创建新创建的关系?

人 - >项目

我要在层次上面加人一个新的实体,称为表:

列表 - >人物 - >项目

此外,我想要在启动时为用户创建用户的第一个列表,并为用户已添加的用户分配该列表。

我熟悉的核心数据的轻量级迁移&版本控制功能,所以我想我知道如何添加新的实体和关系,但我不知道如何:

  1. 创建列表在应用开始时记录,如果他们从未有过列表功能

  2. 将所有现有人员记录设置为属于该新列表。

一个快速和肮脏的方法是添加一些代码执行(1)检查迁移,看看是否有任何列出我的应用程序委托的applicationDidFinishLaunching方法,(2)如果没有,创建默认(3)从我的数据存储中获取所有现有的人员,(4)将每个人员的列表属性设置为新创建的默认列表,最后(5)保存这些更改。

我的问题是:有没有更快或更简单的方法来做到这一切?

回答

1

这几乎是你想要做的。使用NSFetchRequest来查看是否存在任何Lists。如果没有,请创建一个。然后做另一个请求来获得所有的Person。在这里,而不是分配每个Personlist财产,我会创建一个包含所有Person秒的NSSet并分配到Listpeople财产。你确实创建了一个逆向属性,对吧?

这实际上是一个非常轻量级的操作,全部收费,所以我不会担心太多的性能。除非您拥有数百或数千个对象,否则您的用户可能甚至不会注意到。

+0

好主意,我会尝试这种方式。谢谢! – 2010-11-04 21:14:01