Я извлекаю данные vcard из файла vcf из каталога документов приложения в строку. Строка в порядке, но ABPersonCreatePeopleInSourceWithVCardRepresentation
вызывает ошибку BAD_ACCESS. Heres код ...EXC_BAD_ACESS при импорте файла vcf vcard
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(addressBook);
NSData *data=[vcardString dataUsingEncoding:NSUTF8StringEncoding];
CFDataRef vCardData = (__bridge CFDataRef)data;
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if(granted)
{
NSLog(@"%@",vcardString);
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);//BAD_ACCESS ERROR
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
ABAddressBookAddRecord(addressBook, person, NULL);
NSLog(@"added");
}
CFRelease(vCardPeople);
CFRelease(defaultSource);
ABAddressBookSave(addressBook, NULL);
}
else
NSLog(@"not granted");
Херес NSLog vcardString ...
BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 6.1//EN
N:;Home;;;
FN:Home
EMAIL;type=INTERNET;type=HOME;type=pref:[email protected]
TEL;type=CELL;type=VOICE;type=pref:2323454645
PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAICAgICAQICAgIC
....LOT OF GIBBERISH....
END:VCARD
Как вы делаете vCardData ?? – borrrden
@borrrden отредактировал –
Хорошо, простите об этом, следующий вопрос ... где вы делаете «defaultSource»? Я думаю, вам, возможно, понадобится воссоздать его * после того, как вы получите разрешение. – borrrden