Intereting Posts
Почему программа приостанавливается и не сбой, если не установлены точки останова? Тип Swift – MultipeerConnectivity не соответствует протоколу Как скрыть TabBar в RootView ChildViewControllers Пользовательская клавиатура iOS очень медленная В интерфейсе Builder подключите UILabel к пользовательскому UIView IBOutlet Белый UIStatusbar слегка мигает при повторном открытии приложения? Spotify iOS SDK Обновить токены AudioStreamer от Matt Gallagher воспроизводит mp3 со смещения перед воспроизведением состояния Динамический TableView с CollectionView в ячейке прототипа CGRectApplyAffineTransform и рамка фактического представления Autolayout и UIPopoverController Как вызвать быстрый контроллер просмотра в объективе c? Как я могу получить этот простой макет для заголовка UITableView, используя AutoLayout? Ячейка UITableView отображает неправильное изображение даже при установке изображения на нуль в качестве первого шага в tableView.dequeueReusableCell Тестирование «глубокой привязки» iOS без идентификатора магазина приложений

Ошибка при экспорте контактов с использованием структуры адресной книги 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); } } 

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