私は現在voIPアプリを開発していますが、アドレス帳にこだわっています。
カスタムデザインのため、ネイティブアドレスブックは私のアプリに適合しません。また、ネイティブの名簿にはないデータを追加したいと思います。しかし、これは私が2つのセクションに分けたいくつかの問題につながります:
1.データ構造:
私のアプリのセクションで、追加情報を含むすべての名簿の連絡先をユーザーに表示する必要があります(たとえば、ユーザーが同じアプリを持っていて、それがオンラインである場合)。
現在、アドレス帳APIからすべての情報を取得し、それを配列に直接ロードしています(これには、からアクセスしますtableView:cellForRowAtIndexPath:
)が、話していたカスタム情報は表示されません。すべての名簿情報をsqliteデータベース(追加情報を簡単に追加できる場所)に保存する価値があるのか、それともその追加情報だけをファイルなどに保存する必要があるのかわかりません。
それをデータベースに保存することの最大の問題は、連絡先の画像が、メモリの浪費データベースを取得するのに十分なほど重いことです。参照(ABRecordID
)のみを保存してから、データベースではなくアドレスブックから関連情報を収集することを考えましたが、アドレスブックAPIのAppleドキュメントには、ABRecordID
が同じであることが保証されていないため、原因となる可能性があります。私のデータが間違った連絡先データの横に表示されます。
何か案が?
2.パフォーマンス:
このカスタムアドレスブックの2つ目の大きな問題は、たとえば、iOSのテーブルビューがAndroidのテーブルビューに比べて「手動」すぎることです。tableView:cellForRowAtIndexPath:
メソッドが呼び出されたときにそのデータを返すように、データをどこかに保存する必要があります。このメソッド内にそのデータをロードすることもできますが、これにより非常に遅くなります。
ここでの問題は、メモリ内のすべてのデータをプリロードすることは危険です。これは、人が40の連絡先または2000の連絡先を持っている可能性があるためです(おそらく、それぞれの連絡先の写真を撮ったため、メモリをはるかに消費します)。iOSデバイスのメモリが不足すると、システムはアプリを強制終了します。データベースのアプローチにはメモリの問題はありませんが、表示される各セルのクエリを作成するのは非常に遅いため、受け入れられなくなります。
繰り返しますが、私はこれについてのアイデアが必要です。パフォーマンスとメモリ消費の間のトレードオフを見つけることができません。
投稿は許可されていないので、コードを要求しないでください。アドバイスをいただければ幸いです。前もって感謝します!