我正在尝试从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上进行此操作,并且我得到同样的错误。 我也检查了CNContactStore授权状态CNAuthorizationStatusAuthorized之前我调用getAllContacts

这真的令人沮丧,我开始怀疑这可能是Contacts API中的一个错误? 有没有其他人看过这个问题,或者知道可能是什么原因造成的? 谢谢您的帮助!

PS。 我在错误声明中更改了帐户的ID,以防出现安全问题:)

  ask by bfich translate from so

本文未有回复,本站智能推荐: