2009-06-19 8 views
0

AddressBook APIを使用すると、 'ABPeoplePickerNavigationController'を使用していない場合、すべての人のリストを取得する唯一の方法は 'ABAddressBookCopyArrayOfAllPeople'経由であるようです。大きなデータセットとAddressBookのABAddressBookCopyArrayOfAllPeople

ABPeoplePickerNavigationControllerが人を選んで、ビューの動作を却下するのが私の必要としているものではありません。代わりに、私がしたいのは、自分のテーブルビューにアドレス帳の内容を読み込んでから、カスタム選択動作を行うことです。

しかし、テーブルのデータソースとしてデータを供給するためにリスト全体ではなくアドレス帳データを部分的に読み込む方法はありますか?アドレス帳に3000エントリが含まれているとしたら、そのデータをすべてローカルアレイにコピーしています。パフォーマンスを向上させるために、これを回避する最適な方法がありますか?

答えて

0

あなたのテーブルにすべてのコンテンツを表示しようとすると、どういうわけか「ソート」する必要があります。 単純にソートしてアルファベット順に並べ替えると、すべてのアドレス帳をコピーする代わりに"a"で始まるレコードのリストを返すには CFArrayRef ABAddressBookCopyPeopleWithName( ABAddressBookRef addressBook、 CFStringRefの名前 ); nameはaで始まるすべての人物を返す "a *"にすることができます。 あなたのテーブルからこのメソッドへの複数の呼び出しを使用して、私が思うすべての人をコピーしないようにすることができます。

これが役に立ちます。 -t

関連する問題