CNContactStore enumerateContactsWithFetchRequest'无法更新帐户'错误

时间:2016-05-24 17:56:20

标签: objective-c macos osx-elcapitan cncontactstore

我正在尝试从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,以防出现安全问题:)

0 个答案:

没有答案