Ios 如何在.xcdatamodel的核心数据中建立多对多关系

Ios 如何在.xcdatamodel的核心数据中建立多对多关系,ios,core-data,many-to-many,nsentitydescription,Ios,Core Data,Many To Many,Nsentitydescription,大家好,下面的核心数据示例-objective-CIOS确实需要帮助 实体1:人 属性:名称 实体2:语言 属性:LanguageName 例如姓名:John会说语言姓名:英语、韩语、日语 例2是LanguageName:西班牙语、英语、韩语由John、Amy、Ashley说 第一个问题是如何在xcdatamodel中建立这种关系 第二个问题是如何将John会说英语、韩语、日语等信息存储到核心数据中 第三个问题是如何动态显示数据,例如 比如说,如果我有一个由languageName生成的按钮,当

大家好,下面的核心数据示例-objective-CIOS确实需要帮助

实体1:人 属性:名称

实体2:语言 属性:LanguageName

例如姓名:John会说语言姓名:英语、韩语、日语

例2是LanguageName:西班牙语、英语、韩语由John、Amy、Ashley说

第一个问题是如何在xcdatamodel中建立这种关系

第二个问题是如何将John会说英语、韩语、日语等信息存储到核心数据中

第三个问题是如何动态显示数据,例如

比如说,如果我有一个由languageName生成的按钮,当我点击它时,它应该在tableview中显示说该语言的每个人

我尝试了一种不同的方法,使用位移动和存储每个位中的运动,并使用while循环来匹配它,但我已经阅读了一段时间,多对多关系似乎更合适

感谢您的帮助,提前谢谢


我没有提供任何代码,因为我甚至不知道从哪里开始。

要创建多对多关系,请创建两对多关系,并使它们彼此相反

就你而言,你可以

  • 人员添加一个
    对话关系,以及
    
    • 目的地
      设置为
      语言
    • 类型设置为
      多个
  • spokenBy
    关系添加到
    Language
    ,以及
    • 目的地
      设置为
      个人
    • 反向
      设置为
      语音
    • 类型设置为
      多个
  • 通过正确设置
    反向
    ,您可以从一侧设置关系,核心数据将自动照顾另一侧,从而确保数据一致性。例如,曼迪会说英语和西班牙语。要将她所说的语言保存到您的核心数据存储中,只需执行以下操作:

    // mandy, english and spanish are all NSManagedObject objects
    mandy.speaks = [NSSet setWithObjects:english, spanish, nil];
    NSLog(@"%@", [english.spokenBy containsObject:mandy] ? @"YES" : @"NO"); // YES
    
    您可以收听
    nsManagedObjectContextObjectsIDChangeNotification
    以在托管对象发生更改(即插入、删除或更新)时获得通知


    有关更多信息,请参阅此