【问题标题】:Add phone number to existing contact将电话号码添加到现有联系人
【发布时间】:2012-01-12 11:33:12
【问题描述】:

我正在尝试使用 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;
}

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

【问题讨论】:

  • 奖励赏金要等22小时,还有3小时。

标签: objective-c ios addressbook abpeoplepickerview


【解决方案1】:

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

使用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变量中获取更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2018-01-26
    • 1970-01-01
    • 2018-05-27
    • 2014-04-22
    相关资源
    最近更新 更多