How to add a “Custom Label” to iOS AddressBook programmatically?

允我心安 提交于 2019-12-21 02:37:16

问题


When manually adding a contact's phone / IMS in the iOS AddressBook, you can add a Custom Label instead of "Home", "Work", "Other" * (in IMS).

How to create "Custom Label" in AddressBook programmatically?


回答1:


I had this exact same question. I couldn't find an answer so I just tried the guess and check method. The following code seems to work:

CFErrorRef error = NULL; 
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newPerson = ABPersonCreate();
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, @"Jane", &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, @"Smith", &error);

const CFStringRef customLabel = CFSTR( "mylabel" );

//phone
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, @"1-444-444-444", kABPersonPhoneMainLabel, NULL);
ABMultiValueAddValueAndLabel(multiPhone, @"1-333-333-333", kABPersonPhoneMobileLabel, NULL);            
ABMultiValueAddValueAndLabel(multiPhone, @"1-666-666-666", kABOtherLabel, NULL);        
ABMultiValueAddValueAndLabel(multiPhone, @"1-555-555-555", customLabel, NULL); 
ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil);
CFRelease(multiPhone);

ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error);
ABAddressBookSave(iPhoneAddressBook, &error);

if (error != NULL)
{   
    NSLog(@"Error!");   
}

If you check the address book, you will see a phone number with a custom label: mylabel

Thanks to: this post

And to: this blog



来源:https://stackoverflow.com/questions/2675783/how-to-add-a-custom-label-to-ios-addressbook-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!