Добавление номера телефона и электронной почты в адресную книгу дает сбой в iPhoneApp
ABRecordSetValue(person, kABPersonPhoneProperty, (__bridge CFTypeRef)phoneNum, nil);
ABRecordSetValue(person, kABPersonEmailProperty, (__bridge CFTypeRef)eMailId, nil);
комментировать эти две строки дают правильный выход (сохранение записи в адресной книге, без ввода электронной почты и телефона). Но, в то время как в исполнении он терпит неудачу и сбой программы.
значение для Vars:
phoneNum: 000-000-0000
eMailId : AbcdefghIjklm@qwertyuiopasdfghjk.com
тип ошибки: EXC_BAD_ACCESS
Есть Идеи? Или нужна дополнительная информация??
2 ответов
было бы неплохо посмотреть, где и какого типа вы определяете vars. Возможно, вы также выпустили адресную книгу перед этими строками. (например,CFRelease(multiPhone);
)
И, насколько мне известно,--3--> и emailID
должно быть ABMutableMultiValueRef
. По крайней мере, так я это сделал:--7-->
добавлять один номер телефона
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, [self.contact telephone], kABPersonPhoneMobileLabel, NULL);
ABRecordSetValue(person, kABPersonPhoneProperty, multiPhone,nil);
добавление адреса электронной почты:
ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiEmail, @"abc@abc.com", kABWorkLabel, NULL);
ABRecordSetValue(person, kABPersonEmailProperty, multiEmail, &error);
CFRelease(multiEmail);
подробнее о адресная книга-учебник
надеюсь, что это помогает.
Попробуй Такое
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef person = ABPersonCreate();
ABMutableMultiValueRef phoneNumberMultiValue
=ABMultiValueCreateMutable(kABPersonPhoneProperty);
//phoneNumber is the number to be save in Address Book
ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,phoneNumber,kABPersonPhoneMobileLabel, NULL);
//EmailId is the emailId to be save in Address Book
ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,EmailId,kABPersonPhoneMobileLabel, NULL);
ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue,nil);
// set the phone number property
ABAddressBookAddRecord(addressBook, person, nil);
ABAddressBookSave(addressBook, nil);
CFRelease(person);
Я надеюсь, что это может быть полезно ...