У меня есть приложение, которое отлично работало с платформой CNContacts вплоть до IOS 12. В настоящее время я тестирую его с бета-версией IOS 13, и оно полностью сломано. Я проверил разрешения контактов, удалил приложение и повторно разрешил разрешения. Это код, который я использую для получения всех контактов:
NSError* error;
CNContactStore *store = [[CNContactStore alloc]init];
[store containersMatchingPredicate:[CNContainer predicateForContainersWithIdentifiers: @[store.defaultContainerIdentifier]] error:&error];
NSArray *keysToFetch =@[CNContactGivenNameKey, CNContactEmailAddressesKey, CNContactNoteKey];
CNContactFetchRequest *request = [[CNContactFetchRequest alloc]initWithKeysToFetch:keysToFetch];
BOOL success = [store enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact * __nonnull contact, BOOL * __nonnull stop){
NSLog(@"Contact Found: %@", contact.givenName);
}];
Хранилище контактов строится нормально, и ошибка равна нулю. Однако, когда я затем пытаюсь получить контакты с помощью запроса на выборку, я получаю success=NO и получаю следующую ошибку:
Error Domain=CNErrorDomain Code=102 "(null)" UserInfo={CNKeyPaths=(
note
), CNInvalidRecords=(
"<CNContactFetchRequest: 0x60000189aa00: predicate=(null), keysToFetch=(\n givenName,\n emailAddresses,\n note\n), unifyResults=1, sortOrder=0>"
Я пробовал различные настройки, но я не могу заставить это работать вообще. Я также не могу найти никакой документации, чтобы сказать, что это поведение было изменено.
Кто-нибудь еще пробовал это или нашел обходной путь?