Добавление номера телефона и электронной почты в адресную книгу дает сбой в 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); 

Я надеюсь, что это может быть полезно ...