如何在 .xcdatamodel 的核心数据中建立多对多关系
How to make a many to many relationship in core data in the .xcdatamodel
大家好,下面的核心数据示例确实需要帮助 - objective-C IOS
实体1:人
属性:名称
实体 2:语言
属性:语言名称
例如姓名:约翰会说语言姓名:英语、韩语、日语
示例 2 是语言名称:约翰、艾米、阿什利说西班牙语、英语、韩语
第一个问题是如何在 xcdatamodel 中建立这种关系?
第二个问题是如何存储,例如约翰会说英语、韩语、日语进入核心数据?
第三是如何动态显示数据,例如
假设我有一个由 languageName 生成的按钮,当我点击它时应该在表格视图中显示所有说该语言的人?
我尝试了一种不同的方法,使用位移位并将运动存储在每一位中,并使用 while 循环来匹配它,但我已经阅读了一段时间,多对多关系似乎更合适。
感谢任何帮助,提前致谢!
我没有提供任何代码,因为我什至不知道从哪里开始。
要创建多对多关系,您需要创建两个对多关系并使它们互为倒数。
对于你的情况,你可以
- 将
speaks
关系添加到 Person
,以及
- 将
destination
设置为 Language
- 将
type
设置为To Many
- 将
spokenBy
关系添加到 Language
,以及
- 将
destination
设置为Person
- 将
inverse
设置为 speaks
- 将
type
设置为To Many
通过正确设置inverse
,您可以从一侧设置关系,Core Data 会自动处理另一侧,从而确保数据的一致性。例如,Mandy 会说英语和西班牙语。要将她所说的语言保存到您的核心数据存储中,只需执行以下操作:
// 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 Documentation。
大家好,下面的核心数据示例确实需要帮助 - objective-C IOS
实体1:人 属性:名称
实体 2:语言 属性:语言名称
例如姓名:约翰会说语言姓名:英语、韩语、日语
示例 2 是语言名称:约翰、艾米、阿什利说西班牙语、英语、韩语
第一个问题是如何在 xcdatamodel 中建立这种关系?
第二个问题是如何存储,例如约翰会说英语、韩语、日语进入核心数据?
第三是如何动态显示数据,例如
假设我有一个由 languageName 生成的按钮,当我点击它时应该在表格视图中显示所有说该语言的人?
我尝试了一种不同的方法,使用位移位并将运动存储在每一位中,并使用 while 循环来匹配它,但我已经阅读了一段时间,多对多关系似乎更合适。
感谢任何帮助,提前致谢!
我没有提供任何代码,因为我什至不知道从哪里开始。
要创建多对多关系,您需要创建两个对多关系并使它们互为倒数。
对于你的情况,你可以
- 将
speaks
关系添加到Person
,以及- 将
destination
设置为Language
- 将
type
设置为To Many
- 将
- 将
spokenBy
关系添加到Language
,以及- 将
destination
设置为Person
- 将
inverse
设置为speaks
- 将
type
设置为To Many
- 将
通过正确设置inverse
,您可以从一侧设置关系,Core Data 会自动处理另一侧,从而确保数据的一致性。例如,Mandy 会说英语和西班牙语。要将她所说的语言保存到您的核心数据存储中,只需执行以下操作:
// 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 Documentation。