【问题标题】:saving a to-many-relationship保存一对多关系
【发布时间】:2011-07-12 19:44:18
【问题描述】:

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

在网上搜索、查找 Apple 示例并阅读一些书籍后,我仍然卡在一个点上。

我有两个实体(费用和月份)具有相互关系,分别称为“monthsOfExpense”和“expensesOfmonth”,我在表格中显示了一个月的费用。

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

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

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

我从一个文本字段开始,用户可以在其中插入一个月,假设费用仅在一个月内有效(用于学习和简化)。

我的想法是允许用户选择几个月(可能使用另一个带有可选月份的 tableView)并将 Expense 关联到不同的月份。

我知道关系是以 NSSet 的形式出现的,但我没有能力同时从视图中保存属性和关系。

希望破灭,非常感谢您提供帮助。

【问题讨论】:

    标签: core-data relationship


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢丹的回复。我在“月”实体中创建了 12 个对象。我知道我可以使用 NSFetchRequest 和 Predicates 查找一个月的费用。我仍然无法做的(肯定缺乏编程知识和经验!)是通过称为“monthsOfExpense”的关系将我从 AddExpenseViewController 添加的费用分配给特定的“月份”。想象一下,一个视图控制器有一个 textField 或一个 Picker(例如“monthText”),我如何将那个特定的 text.field “月”分配给 expense addMonthsOfExpenseObject:month 方法?感谢您的耐心等待
    【解决方案2】:

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

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

    【讨论】:

    • 再次感谢。我会处理它并给你留下反馈,但现在对我来说似乎更清楚了。谢谢
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多