2012-01-12 15 views
2

に電話番号を追加します。私は、このメソッドが呼び出されるピッカーで人を選択した後、アドレス帳のフレームワークを使用して、既存の連絡先に電話番号を追加しようとしています:は、既存の連絡先

- (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; 
} 

しかし、この後数人の記録に追加されません。私は間違って何をしていますか?

+0

奨励金を授与するのに22時間、まだ3時間を待たなければなりません。 – Thys

+0

さて、覚えていませんでした。タイ:) – Geoffroy

答えて

4

このレコードをアドレス帳に保存する必要があります。

addressBookプロパティを使用してアドレス帳をABPeoplePickerNavigationControllerにしてから、ABAddressBookSaveを呼び出します。あなたが成功/失敗のABAddressBookSave戻り値をテストし、error変数に追加の情報を得ることができます

- (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; 
} 

は、これは、あなたのようなものを提供します。

関連する問題