我正在尝试从El Capitan获取所有联系人,而我正在使用Contacts API执行此操作。这是我获取联系人的方法:
-(void)getAllContacts{
NSError* contactError;
//initialize the contact store
CNContactStore* addressBook = [[CNContactStore alloc]init];
//specify the fields I need
NSArray * keysToFetch =@[CNContactEmailAddressesKey, CNContactPhoneNumbersKey, [CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName]];
//establish the request with the above keys
CNContactFetchRequest * request = [[CNContactFetchRequest alloc]initWithKeysToFetch:keysToFetch];
//fetch all the contacts
BOOL success = [addressBook enumerateContactsWithFetchRequest:request error:&contactError usingBlock:^(CNContact * __nonnull contact, BOOL * __nonnull stop){
//I'm doing nothing here to try to isolate the problem, but even if I do something here, the problem remains
}];
//success is always true
//contactError is always nil
//5 or so seconds later, I see the error output to the console
}
没有什么花哨的东西,但我每次执行此方法后,5-10秒后,以下错误输出到控制台:
[Accounts] Failed to update account with identifier 72360D58-3D7H-49FC-1086-QRCIEQ8A991A0, error: Error Domain=ABAddressBookErrorDomain Code=1002 "(null)"
我没有明确尝试更新任何帐户。如果我不包含enumerateContactsWithFetchRequest
调用,则不输出错误。我已尝试在具有不同联系人列表的多个不同Mac上进行此操作,并且我得到同样的错误。在调用CNAuthorizationStatusAuthorized
之前,我还在检查CNContactStore授权状态是否为getAllContacts
。
这真的令人沮丧,我开始怀疑这可能是Contacts API中的一个错误?有没有其他人看过这个问题,或者知道可能是什么原因造成的?谢谢你的帮助!
PS。我在错误声明中更改了帐户的ID,以防出现安全问题:)