为现有联系人添加电话号码

我正在尝试使用AddressBook框架向现有联系人添加电话号码,在选择具有选择器的人员后调用此方法:

- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { if(_phoneNumber != nil) { ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutableCopy (ABRecordCopyValue(person, kABPersonPhoneProperty)); ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)_phoneNumber, kABPersonPhoneOtherFAXLabel, NULL); ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil); CFRelease(multiPhone); } return FALSE; } 

但在此之后,该号码不会添加到此人的记录中。 我究竟做错了什么?

您需要将此记录保存到通讯簿中。

使用ABPeoplePickerNavigationControlleraddressBook属性获取地址簿,然后调用ABAddressBookSave

这给你一些像:

 - (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { if(_phoneNumber != nil) { ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutableCopy (ABRecordCopyValue(person, kABPersonPhoneProperty)); ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)_phoneNumber, kABPersonPhoneOtherFAXLabel, NULL); ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil); ABAddressBookRef ab = peoplePicker.addressBook; CFErrorRef* error = NULL; ABAddressBookSave(ab, error); CFRelease(multiPhone); } return FALSE; } 

您可以测试ABAddressBookSave返回值的成功/失败,并获取error变量中的其他信息。