在ABAddressBook-iPhone中为现有的ABRecord添加新号码

在ABAddressBook-iPhone中为现有的ABRecord添加新号码,iphone,Iphone,我试图通过我的应用程序更新通讯簿中现有联系人的内容,但不需要UI。场景如下: 1用户输入数字和名称 2应用程序检查该姓名是否在联系人列表中 3如果是,则检查该号码是否为该姓名的联系人之一 4如果不是,则将其添加到该名称中 我已经成功地完成了步骤1-3,但我找不到完成步骤4的方法。有人能帮忙吗 下面是我的代码的样子 ... CFIndex lTotalContactsCount = ABAddressBookGetPersonCount(lAddressBook); NSArray *people

我试图通过我的应用程序更新通讯簿中现有联系人的内容,但不需要UI。场景如下:

1用户输入数字和名称 2应用程序检查该姓名是否在联系人列表中 3如果是,则检查该号码是否为该姓名的联系人之一 4如果不是,则将其添加到该名称中

我已经成功地完成了步骤1-3,但我找不到完成步骤4的方法。有人能帮忙吗

下面是我的代码的样子

...
CFIndex lTotalContactsCount = ABAddressBookGetPersonCount(lAddressBook);
NSArray *people = (NSArray *)ABAddressBookCopyArrayOfAllPeople(lAddressBook );

for (CFIndex i = 0; i < lTotalContactsCount; i++)
{
    ABRecordRef lRef = (ABRecordRef)[people objectAtIndex:i];   

    ...
    // if names match
    {
        ABMutableMultiValueRef lPhoneNumbers = ABRecordCopyValue(lRef, kABPersonPhoneProperty);
        CFIndex lContactPhoneNumberCount = ABMultiValueGetCount(lPhoneNumbers);
        ABRecordID contactID = ABRecordGetRecordID(lRef);

        ...
         // if numbers dont match
        {
                   // THIS BIT IS NOT WOKRING
            CFErrorRef error = NULL; 

            ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
            ABMultiValueAddValueAndLabel(multiPhone, number, (CFStringRef)@"Duplicate", NULL);

        //  ABRecordSetValue(newPerson, kABPersonFirstNameProperty, name, &error);

            //add the number to the contact
            ABRecordSetValue(lRef, kABPersonPhoneProperty, multiPhone,nil);
        //  ABAddressBookAddRecord(lAddressBook, lRef, &error);
            ABAddressBookSave(lAddressBook, &error);
        }

        if( firstName )
            CFRelease(firstName);
        if( lastName )
            CFRelease(lastName);
        if( lPhoneNumbers )
            CFRelease(lPhoneNumbers);

        // no need to search other entries
        if(numberExists)
            break;
    }
。。。
CFIndex lTotalContactsCount=ABAddressBookGetPersonCount(lAddressBook);
NSArray*人=(NSArray*)abAddressBookCopyArrayFallPeople(lAddressBook);
对于(CFIndex i=0;i
今天早上在进一步查看API后,我设法找到了解决方案。给你:

// contactId is the ID of the person i need to add a new number to his contacts
// got the id through : ABRecordGetRecordID( ABRecordRef )
ABRecordRef person = ABAddressBookGetPersonWithRecordID(lAddressBook, contactID);
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutableCopy(lPhoneNumbers);
ABMultiValueAddValueAndLabel(multiPhone, number, (CFStringRef)@"Duplicate", NULL);      
//add the number to the contact
ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil);
ABAddressBookSave(lAddressBook, &error);