Ios 如何在ABAddressBook上编辑记录

Ios 如何在ABAddressBook上编辑记录,ios,objective-c,abaddressbook,Ios,Objective C,Abaddressbook,我希望能够从ABPeoplePickerNavigationController中选择一条记录,然后从我的视图控制器向该联系人添加电子邮件 我试图搜索ABAddressBook类参考,看看我能做些什么,但没有任何见解=/ 我被困在这里的人参考,有人知道如何继续吗 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelecti

我希望能够从ABPeoplePickerNavigationController中选择一条记录,然后从我的视图控制器向该联系人添加电子邮件

我试图搜索ABAddressBook类参考,看看我能做些什么,但没有任何见解=/

我被困在这里的人参考,有人知道如何继续吗

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
使用
ABRecordSetValue(person,kabbersonemailproperty,(u bridge CFStringRef)时,我有一个EXC\u坏访问权限”a@a.com“,&错误)但没有日志错误

更新

好的,我设法将它保存在peoplePicker委托中,如下所示:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {

    ...

    self.addressBook = peoplePicker.addressBook;
    self.selectedPerson = person;

    // adding to native contacts
    CFErrorRef error = nil;
    ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABPersonEmailProperty);
    bool didAddEmail = ABMultiValueAddValueAndLabel(emailMultiValue, (__bridge CFTypeRef)(email), kABOtherLabel, NULL);
    if(didAddEmail){
        ABRecordSetValue(self.selectedPerson, kABPersonEmailProperty, emailMultiValue, nil);
        NSLog(@"Email saved......");
    } else {
        NSLog(@"Error adding email: %@", error);
    }
    ABAddressBookSave(self.addressBook, NULL);

    ...
}
奇怪的是,如果我尝试在这个方法之外这样做,比如在用户输入文本字段后,我会得到一个错误

然后在上述
peoplePickerNavigationController
方法的内部和外部检查我的日志:

(lldb) po self.selectedPerson
(ABRecordRef) $1 = 0x0a1838f0 <CPRecord: 0xa1838f0 ABPerson>
(lldb) po self.selectedPerson
(ABRecordRef) $4 = 0x0a1838f0 [no Objective-C description available]

我的解决方案是保存个人ID,然后再次访问通讯簿并使用:
ABAddressBookGetPersonWithRecordID(addressBook,self.selectedPersonID)

然后再次创建通讯簿

ABAddressBookRef addressBook = ABAddressBookCreate();

我的解决方案是保存个人ID,然后再次访问通讯簿并使用:
ABAddressBookGetPersonWithRecordID(addressBook,self.selectedPersonID)

然后再次创建通讯簿

ABAddressBookRef addressBook = ABAddressBookCreate();

如何保存个人ID?不要介意。找到它:ABRecordID recordID=ABRecordGetRecordID(newPerson);如何保存个人ID?不要介意。找到它:ABRecordID recordID=ABRecordGetRecordID(newPerson);