1
我有一個Contact對象(我寫的一個類),用於創建新的AddressBook人員。這是我的代碼:使用NSString更新kABPersonPhoneProperty添加電話號碼
+ (ABRecordRef)createABPersonFromContact:(Contact*)contact
{
ABRecordRef person = ABPersonCreate();
ABRecordSetValue(person, kABPersonFirstNameProperty, contact.firstName, NULL);
ABRecordSetValue(person, kABPersonLastNameProperty, contact.lastName, NULL);
ABRecordSetValue(person, kABPersonOrganizationProperty, contact.company, NULL);
CFStringRef phoneNumberValue = (CFStringRef)contact.phoneNumber.value;
CFStringRef phoneNumberLabel = (CFStringRef)contact.phoneNumber.label;
ABMutableMultiValueRef phoneNumber = ABMultiValueCreateMutable(kABPersonPhoneProperty);
ABMultiValueAddValueAndLabel(phoneNumber, value, label, NULL);
ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumber, NULL);
CFRelease(phoneNumber);
return person;
}
contact.phoneNumber.value是格式爲「555-555-5555」的NSString。當我運行代碼並顯示帶有此方法返回的ABRecordRef的ABPersonViewController時,每件事情都能正確顯示,但如果我嘗試編輯電話號碼,程序就會崩潰。我嘗試將NSString的contact.phoneNumber.value重新格式化爲「(555)555-5555」以匹配電話號碼在ABPersonViewController中顯示的樣式,但它給了我相同的結果。
有關它爲什麼會崩潰的任何建議?
爲了澄清,'ABMultiValueCreateMutable(kABPersonPhoneProperty)'是錯誤的位。它應該是'ABMultiValueCreateMutable(kABMultiStringPropertyType)'。不幸的是,這個錯誤的例子似乎在網上很普遍在某些情況下,它甚至似乎沒有崩潰地工作,這使我很難找出問題出在哪裏! – robotspacer