核心数据 - 将数组存储到核心数据中的一对多关系表

时间:2013-02-04 16:43:08

标签: iphone ios objective-c cocoa-touch core-data

enter image description here

在我的联系表中,我从iphone的地址簿中插入已挑选联系人的信息。

我存储联系人的姓名和号码(在第0个索引处),并通过此代码添加另外两个字段twilio number和bool check。

AppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context =
[appDelegate managedObjectContext];

Contacts * newContact = [NSEntityDescription
                         insertNewObjectForEntityForName:@"Contacts"
                         inManagedObjectContext:context];

newContact.name = name;
newContact.number = phone;
newContact.isEligible = isEligible;
newContact.twilionumber = tempTwilioNumber;

场景是选择阵列形式的所有其他电话号码(第0个索引除外)并将其保存在具有属性电话号码的ContactDetail表中。 案例是一个联系人可以有多个其他号码。

如何将该数组插入到contactDetail表中,而不是联系人表中的一个条目?

2 个答案:

答案 0 :(得分:0)

您的ContactDetail关系应该是一对多,而不是一对一。您还需要向ContactDetail添加“index”属性。这样,当您获取联系人实例的详细信息时(详细信息将采用NSSet的形式),您可以按索引对其进行排序

答案 1 :(得分:0)

只需遵循以下代码即可;

  AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

  NSManagedObjectContext *context = [appDelegate managedObjectContext];

  Contacts * newContact = [NSEntityDescription
                         insertNewObjectForEntityForName:@"Contacts"
                         inManagedObjectContext:context];

newContact.name = name;
newContact.number = phone;
newContact.isEligible = isEligible;
newContact.twilionumber = tempTwilioNumber;


for (int i=1; i<otherContactNumbersArray.count; i++)
{
    ContactDetail * newContactDetail = [NSEntityDescription
                                        insertNewObjectForEntityForName:@"ContactDetail"
                                        inManagedObjectContext:context];

    newContactDetail.phoneNumber = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, i);
    newContactDetail.contactInfo = newContact;
}

NSError *myError;
[context save:&myError];

非常感谢三十几位访问者,他们甚至没有提高问题的评级,以便我能尽早找到解决方案.... :)