web-dev-qa-db-ja.com

iOSコアデータとNSUserDefaults

ユーザーが外部APIからアイテムを検索できるアプリを作成しています。ユーザーがアイテムを気に入ったら、個人の「お気に入りアイテムリスト」に保存できます。

私の質問は、このデータをコアデータまたはNSUserDefaultの一部として保存することは良い習慣であることです。現在、データは私のデータベース内に保存されています。ユーザーがお気に入りリストにアクセスしようとするたびに、データベースからデータを取得するHTTPコマンドを作成する必要があります。

このプロセスは遅いので、お気に入りリストのデータをコアデータまたはNSUserDefaultに保存します。これは良いアプローチですか?.

リストは急速に拡大する可能性があることを念頭に置いて、ユーザーに依存します。

コアデータまたはUserDefaultに大量のデータを格納することは良い考えですか?

コアデータまたはUserDefaultに大量のデータを格納することは良い考えですか。

「サーバーサイドに残す」に投票します。

データサーバー側を保存する利点の1つは、携帯電話とタブレットのどちらから接続しても同じお気に入りが得られることです。

私がモバイル用にプログラミングをしていたとき、私はデバイス全体をプレゼンテーションレイヤーとして扱う傾向がありました。たとえば、「お気に入り」が1,000ある場合、最初のHTTP呼び出しでお気に入りの名前を数百だけ送信する可能性があります。

スクロールすると、さらに多くの名前が送信されます。スクロールを1秒間停止するか、実際に表示するお気に入りを1つ選択するまで、詳細を送信しません。 (スクロールを停止した場合、現在画面に表示されている数十のお気に入りの詳細をダウンロードする場合があります)。

もちろん、これは信頼できるネットワーク接続がある場合にのみ機能します。オフラインで機能する必要がある場合は、データをローカルに(おそらくコアデータに)キャッシュするのが唯一の選択肢です。

1
Dan Pichelman

最後の質問に答えるには、NSUserDeafaultsに大量のデータを保存するのがnotです。

NSUserDefaultsは、データのチャンクを分割するために作成されていません。これはシングルトンであり、そのすべてのデータは常にロードされます。また、NSUserDefaultsを使用してマルチスレッドをサポートすることは簡単にはできません。

Core Dataを使用する方がNSUserDefaultsよりも優れています。

私があなたの状況で提案するのは、頻繁にアクセスされるデータをキャッシュすることです。このようにして、ユーザーのデバイスで大量のメモリを消費することなく、より応答性の高いエクスペリエンスを提供します。

3
Marin Bencevic