我希望能夠從ABPeoplePickerNavigationController中選擇記錄,然後向該聯繫人添加電子郵件,但是從我的視圖控制器中添加。如何編輯ABAddressBook上的記錄
我試圖尋找在ABAddressBook類引用,看看有什麼我可以做,但沒有見解=/
我在這裏堅持的人蔘考,任何人都知道的方式進行?
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
我在使用ABRecordSetValue(person, kABPersonEmailProperty, (__bridge CFStringRef)@"[email protected]", &error);
時遇到了EXC_BAD_ACCESS,但沒有記錄錯誤。
UPDATE
好吧,我設法將其保存到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);
...
}
奇怪的是,如果我嘗試這樣做,這種方法外,如用戶輸入後,在textField上,我得到一個錯誤。
然後檢查我的日誌,而內部和外部的peoplePickerNavigationController
方法上面:
(lldb) po self.selectedPerson
(ABRecordRef) $1 = 0x0a1838f0 <CPRecord: 0xa1838f0 ABPerson>
(lldb) po self.selectedPerson
(ABRecordRef) $4 = 0x0a1838f0 [no Objective-C description available]
第一個日誌似乎是正常的,因爲它代表法內完成,但第二個是怪異的,我的意思是內存參考在那裏,但沒有內容...第二個被記錄在PeoplePicker被解僱後...
爲什麼發生這種情況?
我的.h文件:
@property (nonatomic) ABAddressBookRef addressBook;
@property (nonatomic) ABRecordRef selectedPerson;
如何保存人員ID?沒關係。找到它:ABRecordID recordID = ABRecordGetRecordID(newPerson); – zumzum