EXC_BAD_ACCESS на ABAddressBookSave (...) iOS 4.3 - PullRequest
1 голос
/ 07 мая 2011

У меня проблема при сбое приложения при попытке сохранить адресную книгу.Авария происходит из-за 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*/
}
...