2011-03-10 96 views
0

我开始学习和练习一些CoreData,没有编程经验。保存一对多的关系

在网络搜索,寻找苹果样本和阅读一些书籍后,我仍然陷入了一个困境。

我有两个实体(费用和月)与互惠关系称为“monthsOfExpense”和“expensesOfmonth”,我在一个tableView显示一个月的费用。

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

我很好保存Expense实体的名称和值,从textFields中取出字符串和NSDecimal数字。

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

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

我的想法是允许用户选择几个月(使用也许另一个tableView与可选月份)和一个费用与不同月份的关联。

我知道一个关系是以NSSet的形式出现的,但我无法同时保存视图的属性和关系。

希望已经被清除了,很多感谢提前尝试帮助。

回答

1

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

Expense *expense1 = [NSEntityDescription insertNewObjectForEntityName:@"Expense" .... 
Month *month1 = [context executeFetchRequest:......]; 
expense1.month = month1; 
... 
[context save]; 
+0

再次感谢。我会继续努力并留下您的反馈意见,但现在对我来说似乎更加清楚。谢谢 – Diogo 2011-03-21 16:19:40

0

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

然后,您可以使用NSFetchRequest查找这些月份对象。将相关月份对象添加到您的费用中使用

[expense addMonthObject:month] 

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

+0

感谢丹回复。我在“月”实体中创建了12个对象。我知道我可以使用NSFetchRequest和Predicates查找一个月的费用。我仍然无法做到的事情(缺乏确定的编程知识和经验!)是通过名为“monthsOfExpense”的关系将我从AddExpenseViewController添加到特定“月份”的费用分配到。想象一下,视图控制器有一个textField或一个Picker(例如“monthText”),我怎样才能将该特定的text.field“month”赋值给'expense addMonthsOfExpenseObject:month'方法?。感谢您的耐心 – Diogo 2011-03-16 10:17:52

0

你消息的mutableSetValueForKey管理对象:RelationshipKey, 那么你的一对多管理对象添加到该组。 CoreData完成关系数据的另一半。