2010-04-20 1 views
6

При ручном добавлении телефона контакта/IMS в адресной книге iOS вы можете добавить пользовательскую метку вместо «Главная», «Работа», «Другое» * (в IMS).Как добавить «Пользовательскую метку» в адресную книгу iOS программно?

Как создать «пользовательскую метку» в адресной книге программно?

ответ

11

У меня был такой же вопрос. Я не мог найти ответ, поэтому просто попробовал метод угадывания и проверки. Следующий код, кажется, работает:

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!"); 
} 

Если вы проверить адресную книгу, вы увидите номер телефона с пользовательской меткой: MyLabel

Благодаря: this post

А также: this blog

+0

Он отлично работает для меня, спасибо большое! – Will