-1

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

Entity1:人员属性:名称

Entity2:语言属性:LanguageName

例如姓名:约翰会说语言名称:英语、韩语、日语

示例 2 是 LanguageName: Spanish, English, Korean is speak by John, Amy, Ashley

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

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

第三是我如何动态显示数据,例如

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

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

任何帮助表示赞赏,在此先感谢!

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

4

1 回答 1

0

要创建多对多关系,您需要创建两个对多关系并使它们彼此相反。

在你的情况下,你可以

  1. 添加speaks关系到Person, 和
    • 设置destinationLanguage
    • 设置typeTo Many
  2. 添加spokenBy关系到Language, 和
    • 设置destinationPerson
    • 设置inversespeaks
    • 设置typeTo Many

通过正确设置inverse,您可以从一侧设置关系,Core Data 将自动处理另一侧,从而确保数据一致性。例如,Mandy会说英语和西班牙语。要将她说的语言保存到您的 Core Data 存储中,只需执行以下操作:

// mandy, english and spanish are all NSManagedObject objects
mandy.speaks = [NSSet setWithObjects:english, spanish, nil];
NSLog(@"%@", [english.spokenBy containsObject:mandy] ? @"YES" : @"NO"); // YES

NSManagedObjectContextObjectsDidChangeNotification每当您的托管对象发生更改(即,插入、删除或更新)时,您都可以收听以获得通知。


有关详细信息,请参阅此Apple 文档

于 2016-06-04T09:01:51.437 回答