0

メモリへのロードを避けたい大きな(6〜7MB)キー値ファイルを備えたiPhoneアプリがあります。使用されることはめったになく、その量のRAMをかみ砕くことは不要のようです。

今のところ、それはフォーマットの行を持つフラットテキストファイルです

KEY VALUE

しかし、私はそれを保存してうれしいですが、最もうまくいきます。

このための最良のアプローチは何ですか?SQLiteはオプションですが、それはかなり重い解決策のようです。coredataはSQLiteへの優れたインターフェイスであると言われていますが、これにはファイル全体をnsdictaionaryとしてメモリにロードする必要があるようです。

4

3 に答える 3

2

まず、SQLiteは「ヘビーウェイト」ソリューションではありません。そのメモリ要件は非常に低く、そのパフォーマンスは良好です。SQLiteを使用する場合は、Objective-Cでの使用を容易にするために、FMDBやPLDatabaseなどのラッパーが必要になる可能性があります。

次に、CoreDataはSQLiteのラッパーではありません内部でSQLiteを使用しますが、これはCoreDataAPIでは公開されていない実装の詳細です。Core Dataはこの状況で機能しますが、SQLスタイルの用語で考えると、失敗することを保証します。

テーブルをめったに使用しない場合、最も簡単なアプローチは、テーブルをJSONまたはプロパティリストとして保存し、オンデマンドですべてを読み取ることです。完了時に注意深くアンロードし、まだメモリ制限をプッシュしていない限り、私はそれについて心配しません。より頻繁に必要な場所に到達する可能性がある場合は、SQLiteまたはCore Dataのいずれかを検討してください。どちらの場合も、すべてをメモリにロードしなくても、必要な値を検索できます。

于 2013-03-22T16:53:00.757 に答える
1

すべてのキーをメモリにロードせずに、どのようにキーを検索しますか?

独自のインデックススキームを実装することも、SQLiteを使用することもできます(他のアプリやサービスのために、コードはすでにメモリにある可能性があります)。

于 2013-03-22T12:49:07.603 に答える
0

6〜7MBは大きくありません。したがって、それを辞書にロードし、それが終わったら、それが削除/リンク解除されていることを確認することができます。または、独自のクエリを記述して、キーをスキャンしてファイル行を自分で読み取ることもできます。しかし、6〜7MBは大きくありません。

ファイルの内容を管理している場合は、既存のAppleフレームワークを使用してファイルをとして記述しplist、次に辞書として読み込んでplistクエリを実行します。

于 2013-03-22T12:49:41.093 に答える