1

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ます。

これは本当にイライラします。連絡先 API のバグではないかと疑い始めています。他の誰かがこの問題を見たことがありますか、それとも何が原因なのか考えていますか? 助けてくれてありがとう!

PS。セキュリティ上の懸念がある場合に備えて、エラー ステートメントでアカウントの ID を変更しました :)

4

0 に答える 0