2012-02-21 8 views
1

私は、「クライアント」というエンティティを含むコアデータスタックを持っています。各クライアントには、AddressBookの個人レコードのuniqueIDを参照する 'addressBookID'プロパティがあります。私は現在、fetchedResultsControllerを使用して、これらのクライアントを表示するためにtableViewControllerを設定しています。しかし、viewControllerは非常に基本的です。コアデータスタックのクライアントでABPeoplePickerNavigationControllerを使用する方法

理想的には、ABPeoplePickerNavigationController UIを使用して、クライアントがLast Initialのセクションで区切られていて、すぐにアルファベット内の目的のポイントにフリックすることができるドラッグバーが右側にあるようにします。追加された検索機能も便利です。

ABPeoplePickerNavigationControllerを使用することはできますが、デリゲートを使用して独自のデータを設定することは可能ですか?

これらの機能のビットは、簡単にfetchedResultsControllerスタイルテーブルに追加できますか?私が持っている他の唯一の問題は、コアデータスタックから結果をフェッチできますが、ABAddressBookに格納されている名前でソートすることです。 sortDescriptorがスタック外に格納されているフィールドへの参照によってソートできるかどうかわかりません。

アドバイス/コメントをお待ちしていますか?

答えて

1

ABAddressBookRefを作成し、ナビゲーションコントローラに表示する連絡先を入力する必要があります。その後、ABPeoplePickerNavigationControllerを作成し、ABAddressBookRefをaddressBookプロパティに割り当てます。

ABPeoplePickerNavigationController documentation

Optional. The address book from which to obtain the list of contacts. 

@property(nonatomic, readwrite) ABAddressBookRef addressBook 

ABAddressBookRef、ABAddressBookCreateで始まり()およびABAddressBookAddRecord()を作成します。これらの機能はApple's ABAddressBook Reference for iOSに記載されています。

ABAddressBookRefへの変更を保存しない(つまり、一時的な連絡先で設定したい)場合は、単にABAddressBookSave()を呼び出さないでください。ドキュメントの状態

返されたアドレス帳の変更は、アドレス帳データベースにABAddressBookSaveで保存した後に反映されます。

+0

ありがとうございます。ABAddressBookRefの新しいインスタンスを作成するにはどうすればよいですか?私はこれらが単にAppleアドレス帳へのプログラミングインターフェイスだと思っていたので、Appleアドレス帳に格納されている連絡先しか表示できませんでしたか? –

+0

(回答が更新されました) – bneely

+0

申し訳ありませんが、Appleアドレス帳にレコードを追加しませんか?私はAppleのドキュメントを誤解しているかもしれませんが、「ABAddressBookの不透明なタイプ(インスタンスはアドレス帳と呼ばれています)は、アドレス帳へのプログラミングインターフェイスを提供します - 複数のアプリケーションが個人に関する個人情報を格納する集中データベースです。別のインスタンスを作成し、中央アドレス帳を変更せずにABAddressBookAddRecordを使用する方法を理解していません。 –

関連する問題