我有一个应用程序在一直到 IOS 12 的 CNContacts 框架中运行得非常好。我目前正在使用 IOS 13 beta 对其进行测试,但它完全被破坏了。我检查了联系人权限并删除了应用程序并重新允许了权限。这是我用来检索所有联系人的代码:
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>"
我尝试了各种调整,但我根本无法让它工作。我也找不到任何文件说这种行为已经改变。
有没有其他人也尝试过这个或找到解决方法?