2012-04-07 132 views
1

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

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

所以我会想象,我可以简单地做到以下几点:

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

所以像这样你设置属于会场的接触对象的电子邮件属性。但是这不起作用,有什么想法?

是否有可能因为联系人对象不存在?希望你能帮忙,谢谢。

+0

请张贴您的.xcodeModel的屏幕截图... – 2012-04-07 12:30:35

+0

我更新了我的答案。请看看.. – 2012-04-07 12:55:19

回答

4

你写的这行不会这样。我假设联系人是您在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的关系,那么我们只与它。

这可能会让人困惑,所以我建议您遵循一些教程,这些教程将为您提供一些想法来掌握关于核心数据关系的一些基础知识。 core data relationships tutorials

+0

已更改contactInfo.venue = selectedVenue; contactInfo.venue = venueInfo; – 2012-04-07 13:00:22

+0

好的,谢谢,这是有道理的,但无疑这只有在您第一次提供场地联系信息时才有效?因为下次您再次编辑这个内容时,您再次创建一个新的联系人对象,当然您需要使用诸如venue.contact之类的东西访问它的现有信息。 – 2012-04-07 13:07:35

+0

对不起,但没有得到你?你是否参考了核心数据的任何参考或样本代码? – 2012-04-07 13:14:25