繁体   English   中英

核心数据-将数组存储到核心数据中-多个关系表

[英]core data - storing an array into core data one - tomany relationship table

在此处输入图片说明

在我的联系人表中,我插入了从iPhone的通讯录中选择的联系人的信息。

我存储联系人的姓名和电话号码(在第0个索引处),并在此代码中再添加两个字段twilio number和bool检查。

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表中?

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

只需遵循代码即可达到目的。

  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];

非常感谢三打来的访客,他们甚至都不想打扰这个问题,因此我可以尽早找到解决方案。...:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM