【问题标题】:CoreData One-to-One RelationshipCoreData 一对一关系
【发布时间】:2012-04-07 12:24:48
【问题描述】:

在我的应用程序中,我使用 CoreData,我有两个实体。 VenueInfo 和 ContactInfo。

在应用程序中,您可以添加场地,每个场地都有ContactInfo。所以我在我的模型中设置了一对一的关系。

所以我想,我可以简单地执行以下操作:

[venue.contact setValue:textField.text forKey:email];

因此,您需要设置属于该场所的联系人对象的电子邮件属性。但是这不起作用。

可能是因为联系人对象还不存在吗?

【问题讨论】:

  • 请发布您的 .xcodeModel 的屏幕截图...
  • 我更新了我的答案。请看看..

标签: iphone objective-c core-data


【解决方案1】:

你写的那行不会那样工作。我假设联系人是您在 xCodeModel 中的 Venue 实体中的关系名称。

 [venue.contact setValue:textField.text forKey:email]; // can't write this way..

假设您的ContactInfo 实体有两个字段:phoneemail,这样您就可以走了。 而VenueInfo 实体有两个字段:name

  VenueInfo *venueInfo=[NSEntityDescription   insertNewObjectForEntityForName:@"VenueInfo" inManagedObjectContext:self.managedObjectContext];
  vanueInfo.name=txtVenueName.text;           // venue name entry


  ContactInfo *contactInfo=[NSEntityDescription   insertNewObjectForEntityForName:@"ContactInfo" inManagedObjectContext:self.managedObjectContext];

  contactInfo.phone=txtPhone.text;
  contactInfo.email=txtEmail.text;
  contactInfo.venue=venueInfo;  // I assume venue is the relationship name you give in ContactInfo entity towards Venue entity.

我们在这里所做的是将电话和电子邮件详细信息仅保存到 ContactInfo 实体,然后我们只是将其与当前选择的 VenueInfo 相关联,访问我们在 ContactInfo 实体中为 VenueInfo 声明的关系。

这可能很令人困惑,所以我建议您学习一些教程,这些教程会让您了解一些有关核心数据关系的基础知识。

【讨论】:

  • 更改了contactInfo.venue=selectedVenue;到 contactInfo.venue=venueInfo;
  • 好的,谢谢,这是有道理的,但是这肯定只有在您第一次提供场地联系信息时才有效?因为下次你回来编辑这个时,你再次创建一个新的联系人对象,你肯定需要使用诸如venue.contact之类的东西来访问它的现有信息?
  • 对不起,但没有得到你?您是否参考了核心数据的任何参考或示例代码?
  • 您是说要再次访问它吗?喜欢编辑吗??
  • 是的,用户第一次添加场所时,我需要为该场所创建一个新的联系人对象,对吗?但是用户可以编辑地点,所以当他们回来时,他们需要访问先前存在的对象,而不是创建一个新的联系人对象。
猜你喜欢
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多