Objective c 如何在iOS上的核心数据中建立新创建的关系?

Objective c 如何在iOS上的核心数据中建立新创建的关系?,objective-c,core-data,ios,Objective C,Core Data,Ios,因此,我在现有的iPhone应用程序中使用核心数据,并设置了两个实体:个人和项目。我的应用程序导航的根视图(当前)显示了一个人员列表,您可以从那里向下钻取到项目。简而言之,层次结构如下所示: 人员->项目 我想在层次结构中的Person上方添加一个名为List的新实体: 列表->人员->项目 此外,我希望在启动时为用户创建第一个列表,并为用户已经添加的任何人分配到该列表 我熟悉Core Data的轻量级迁移和版本控制功能,因此我认为我知道如何添加新的实体和关系,但我不确定如何: 如果他们以前从未

因此,我在现有的iPhone应用程序中使用核心数据,并设置了两个实体:个人和项目。我的应用程序导航的根视图(当前)显示了一个人员列表,您可以从那里向下钻取到项目。简而言之,层次结构如下所示:

人员->项目

我想在层次结构中的Person上方添加一个名为List的新实体:

列表->人员->项目

此外,我希望在启动时为用户创建第一个列表,并为用户已经添加的任何人分配到该列表

我熟悉Core Data的轻量级迁移和版本控制功能,因此我认为我知道如何添加新的实体和关系,但我不确定如何:

  • 如果他们以前从未使用过列表功能,请在应用程序启动时创建列表记录

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

  • 一种快速而肮脏的方法是向我的app delegate的ApplicationIDFinishLaunching方法添加一些代码,该方法通过以下方式执行迁移:(1)检查是否有列表,(2)如果没有,则创建默认列表,(3)从我的数据存储中提取所有现有人员,(4)将每个人的列表属性设置为新创建的默认列表,最后(5)保存这些更改


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

    这正是你想要做的。使用
    NSFetchRequest
    查看是否存在任何
    列表。如果没有,创建一个。然后执行另一个请求以获取所有
    人员。在这里,我将创建一个包含所有
    人的
    NSSet
    ,而不是分配每个
    人的
    列表
    属性,并将其分配给
    列表
    属性。你确实创建了一个反向属性,对吗


    这实际上是一个非常轻量级的操作,所有这些都是收费的,所以我不会太担心性能。除非你有成百上千的
    Person
    对象,否则你的用户可能根本不会注意到。

    好主意,我就这样试试。谢谢