2013-06-04 3 views
15

私のアプリは連絡先をアップロードしていますが、将来はそれらを更新する必要があります。 ABRecordIDを信頼性の高い方法で使用しているか、または新しいレコードが削除されたレコードのIDを取得する可能性がありますか?ABRecordIDはユニークな連絡先を識別する信頼できる方法ですか?

アップロードを最適化するために、前回のアップロード以降に変更または作成されたレコードのみをアップロードしたいと思います。私は現在、コアデータを使用して人の連絡先のコピーを保管しています。私は、私のアプリのフットプリントをスリムにして、修正/新しい連絡先を探して、アップロードする必要がある量を制限する人のアドレス帳をスキャンする実行時間を短縮したいと思います。いくつかの人々のアドレス帳を分析した後、連絡先の数は30人から30,000人までになります。 3万人のコンタクトを扱うことは悪夢です。

答えて

16

新しいレコードは、以前に削除されたレコードに関連付けられたIDを取得しません。 ABRecordIDはその点でユニークです。しかし、それらは必ずしも時間の経過とともに一貫しているとは限らず、いくつかの事がidの変更を引き起こす可能性があります。ユーザーがiCloudをオンまたはオフにすると、IDが変更され、iTunesからデバイスが復元される可能性があります。 つまり、ABRecordIDは連絡先の一意のIDを取得するための最良の方法です。あなたはそれを使用するときに整列していることを二重に確認する必要があります。特定の レコードへの長期的な参照を保持するために推奨される方法は、最初と最後の名前を格納することです

、又は第一及び 最後のハッシュ:アップルは、アドレス帳のプログラミングガイドでは、次のことを示唆しています名前に加えて、識別子に加えて。 IDでレコードを検索するときは、レコードの名前と格納されている名前を比較します。一致しない場合は、保存された名前を使用してレコードを検索し、そのレコードに新しいID を保存します。

+1

リファレンス:https://developer.apple.com/library/ios/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/DirectInteraction.html – rjobidon

関連する問題