У меня проблема при сбое приложения при попытке сохранить адресную книгу.Авария происходит из-за EXC_BAD_ACCESS
и происходит во время ABCDBContextSaveMultiValue
из-за вызова CFArrayGetCount(...)
Поэтому я полагаю, что изолировал проблему, но не знаю, как ее исправить.Вот мой код:
ABAddressBookRef addressBook = ABAddressBookCreate();
for (int i=0; i<[pledgeInfo count]; i++ ) {
NSArray * pledgeObj = [pledgeInfo objectAtIndex:i];
ABRecordRef personRef = ABPersonCreate();
CFErrorRef error = NULL;
if( !ABRecordSetValue(personRef, kABPersonFirstNameProperty, [pledgeObj objectAtIndex:1], &error) ) {/*ErrorHandle*/}
if( !ABRecordSetValue(personRef, kABPersonLastNameProperty, [pledgeObj objectAtIndex:2], &error) ) {/*ErrorHandle*/}
if( !ABRecordSetValue(personRef, kABPersonEmailProperty, [pledgeObj objectAtIndex:4], &error) ) {/*ErrorHandle*/}
// ERROR IS IN HERE SOMEWHERE
ABMutableMultiValueRef phNums = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueIdentifier abi;
if( !ABMultiValueAddValueAndLabel(phNums, [pledgeObj objectAtIndex:3], kABPersonPhoneMobileLabel, &abi) ) {/*ErrorHandle*/}
if( !ABRecordSetValue(personRef, kABPersonPhoneProperty, phNums, &error) ) {/*ErrorHandle*/}
if( !ABAddressBookAddRecord(addressBook, personRef, &error) ) {/*ErrorHandle*/}
}
NSLog(@"%@",addressBook);
CFErrorRef cferr = NULL;
if( !ABAddressBookSave(addressBook, &cferr) ) {/*ErrorHandle*/
}