保存多对多关系

时间:2011-03-10 15:27:28

标签: core-data relationship

我开始学习和练习一些没有编程经验的CoreData。

在网上搜索,寻找Apple样本并阅读一些书籍后,我仍然坚持一点。

我有两个实体(费用和月份),互惠关系称为“monthsOfExpense”和“expensesOfmonth”,我在一个表格中查看一个月的费用。

我的问题是插入新费用并保存它们:我有一个视图可以插入新费用,用户可以插入费用名称,费用和费用有效的月份(与monthsOfExpense关系相关联,我希望)。

我可以保存Expense实体的名称和值,从textFields中获取字符串和NSDecimal数字。

我的问题是如何将这笔费用与特定或几个月相关联?如何将textField.text保存为关系,指示费用属于哪个月?

我开始使用textField,用户可以插入一个月,假设费用只有一个月有效(用于学习和简化)。

我的想法是允许用户选择几个月(可能使用另一个具有可选月份的tableView)以及将费用与不同月份相关联。

我知道一个关系来自NSSet,但我无法同时保存View中的属性和关系。

希望得到了解决,并提前多多感谢您提供帮助。

3 个答案:

答案 0 :(得分:1)

行。在Core数据中,您定义“费用”实体,创建与“月”实体的关系。现在为这两个实体创建类文件。然后你通过

使用它
Expense *expense1 = [NSEntityDescription insertNewObjectForEntityName:@"Expense" ....
Month *month1 = [context executeFetchRequest:......];
expense1.month = month1;
...
[context save];

答案 1 :(得分:0)

在您的情况下,您可以预定义12个“月”对象,将月份名称作为文本属性。

然后,您可以使用NSFetchRequest查找这些月份对象。使用

将相关月份对象添加到您的费用中
[expense addMonthObject:month]

然后保存您的托管对象上下文。

答案 2 :(得分:0)

您向托管对象发送其mutableSetValueForKey消息:RelationshipKey, 然后将多对象托管对象添加到该集合。 CoreData完成关系数据的另一半。