0

My Contacts アプリを一番下までスクロールすると、連絡先の数が表示され、連絡先と表示されます2568

しかし、私のアプリでは、AddressBook から連絡先の数を取得しようとすると、ABAddressBookGetPersonCount によって連絡先が取得され2582ます。

誰もこれに気づきましたか?この違いはなぜあるのでしょうか?AddressBook フレームワークは間違った情報を提供しますか??

編集

 CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
 CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
 NSLog(@"num people to send: %ld", nPeople);
 NSLog(@"num people in array: %ld", CFArrayGetCount(allPeople));

これら 2 つのログから同じ番号が返されますが、この番号は iPhone の連絡先アプリの下部に表示される番号とは異なります。

4

2 に答える 2

0

連絡先アプリは、さまざまなグループから連絡先を取得します。グループ選択ページ (IOS 7 では左上) に移動し、連絡先を選択または選択解除することで、リスト内の人数を変更できます。

リストが「利用可能な」すべての連絡先を取得している場合、違いは、連絡先アプリで使用されていないソースからの連絡先によるものです。お気付きかもしれませんが、メールの入力を開始すると、その人の連絡先がなくてもメールが自動入力されます。その情報は AddressBook データベース内に保存されますが、連絡先アプリには取り込まれません。ABAddressBookCopyArrayOfAllPeople を使用すると、これらの「連絡先」も取り込まれます。これを確認するには、すべての連絡先をテーブルビューに入れ、各連絡先の名前、最初の電子メール、最初の電話番号を出力します。おそらく、メール アドレス (または電話番号) のみを含む連絡先がいくつか見つかるでしょう。

すべての連絡先を印刷する方法の例は、ここにあります。

于 2013-10-14T03:47:13.337 に答える