Intereting Posts
Дублирование записей CoreData с синхронизацией iCloud Извлеките мой канал YouTube в мое приложение для iOS как получить последнее известное местоположение, сохраненное на устройствах iOS? BAD ACCESS после блока в блоке называется (iOS) Загрузка обновления приложения с помощью другого идентификатора Попытка добавления UIButton в UIView, но получение NSInvalidArgumentException ', reason:' – : непризнанный Должен ли CKRecordZoneID быть уникальным для каждого пользователя? Спецификация Cocoapod с отдельными структурами для каждой спецификации Ошибка ASIHTTPRequest при настройке делегата? Swift ios7 раскадровка – запустите главную сцену Swift: создание многофункционального многоадресного делегата Как работает источник данных и делегат в UITableView? Как воспроизвести видео, начиная с определенной точки на iOS 9 Правильное использование Grand Central Dispatch – запуск, приостановка, возобновление, отмена потока? завершение с неперехваченным исключением типа NSException ionic

Ошибка при экспорте контактов с использованием структуры адресной книги iOS 9?

Контакты не добавляются в адресную книгу. Ошибка Сохранение человека в AddressBook в iOS 9, но работающий в iOS 6. Когда я добавляю контакт, блок if выполняется с функцией «Ошибка журнала ошибок» в адресной книге.

-(void)addContactToPhoneBook{ ABPeoplePickerNavigationController *peoplePicker=[[ABPeoplePickerNavigationController alloc] init]; addressBook = [peoplePicker addressBook]; // create person record person = ABPersonCreate(); cfError = nil; if (firstName) { ABRecordSetValue(person, kABPersonFirstNameProperty, (__bridge CFTypeRef)(firstName) , nil); } if (jobTitle) { ABRecordSetValue(person, kABPersonJobTitleProperty,(__bridge CFTypeRef)(jobTitle), nil); } if (personEmail) { ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); ABMultiValueAddValueAndLabel(emailMultiValue, (__bridge CFStringRef) personEmail, kABWorkLabel, NULL); ABRecordSetValue(person, kABPersonEmailProperty, emailMultiValue, nil); CFRelease(emailMultiValue); } if (phoneNo) { ABMutableMultiValueRef phoneNumberMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); NSArray *venuePhoneNumbers = [phoneNo componentsSeparatedByString:@" or "]; for (NSString *venuePhoneNumberString in venuePhoneNumbers) ABMultiValueAddValueAndLabel(phoneNumberMultiValue, (__bridge CFStringRef) venuePhoneNumberString, kABPersonPhoneMainLabel, NULL); ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue, nil); CFRelease(phoneNumberMultiValue); } // add address ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType); NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init]; ABMultiValueAddValueAndLabel(multiAddress, (__bridge CFDictionaryRef) addressDictionary, kABWorkLabel, NULL); ABRecordSetValue(person, kABPersonAddressProperty, multiAddress, NULL); CFRelease(multiAddress); //Add person Object to addressbook Object. ABAddressBookAddRecord(addressBook, person, &cfError); if (ABAddressBookSave(addressBook, nil)) { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success" message:@"Contact added sucessfully" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; [alert show]; NSLog(@"\nPerson Saved successfuly"); } else { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Failed" message:@"Failed to add contact" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; [alert show]; NSLog(@"\n Error Saving person to AddressBook"); } } 

Попробуй это

 - (void)viewDidLoad { [super viewDidLoad]; arrContactName = [[NSMutableArray alloc]init]; arrPhoneNumber = [[NSMutableArray alloc]init]; arrAddContact = [[NSMutableArray alloc]init]; } -(void)viewWillAppear:(BOOL)animated { ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { if (granted) { [self dismissViewControllerAnimated:YES completion:nil]; } else { [self dismissViewControllerAnimated:YES completion:nil]; } }); } else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { [self getAllContacts]; } else { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Unable to Access!" message:@"Grant us access now! Change privacy setting in settings app." delegate:self cancelButtonTitle:@"Not now" otherButtonTitles:@"OK", nil]; [alert show]; } } #pragma mark - #pragma mark - Get All Contacts -(void)getAllContacts { CFErrorRef error = NULL; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); if (addressBook != nil) { NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); NSUInteger i = 0; for (i = 0; i < [allContacts count]; i++) { ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i]; NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty); NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty); if (lastName == nil) { strLastname = @""; } else strLastname = lastName; NSString *fullName = [NSString stringWithFormat:@"%@ %@", firstName, strLastname]; NSString *phone=nil; ABMultiValueRef phoneNumbers = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty); if (ABMultiValueGetCount(phoneNumbers) > 0) { phone = (__bridge_transfer NSString*) ABMultiValueCopyValueAtIndex(phoneNumbers, 0); } else { phone = @"[None]"; } [arrContactName addObject:fullName]; [arrPhoneNumber addObject:phone]; NSLog(@"Full Name =%@",fullName); NSLog(@"Phone Number =%@",phone); } CFRelease(addressBook); } } 

Надеюсь это поможет.