0

私が持っている .xlsx (MS Excel ファイル) からのユーザー データを表示する、ビルドしようとしている iOS アプリがあります。ファイルには約 11,000 行あり、1 行あたり 20 列です。各行を のサブクラスに変換するパーサーを作成しましたNSObject。各列はインスタンス変数です。NSCoding準拠させ、各インスタンスを に追加しNSDictionary、そのキーを元のファイルの最初の行にして、アーカイブしました。私の問題は、最大 20 個のオブジェクトまたはその中のオブジェクトにアクセスするために、そのような大規模な を解凍したくないということですNSDictionary。いつでも必要になる可能性があります。

問題は、このような方法でこのデータのチャンクを保存するにはどうすればよいかということです。ヒープに 11,000 個のオブジェクトが存在せず、アプリの実行中に必要なものをアプリに読み込むことができますか?

4

1 に答える 1

2

最良の選択肢は、データをデータベースにエクスポートすることだと思います。

最も単純なソリューションはSQLiteまたはCoreDataです。

開発時間を大幅に節約できるので、私は CoreData を使用します (ただし、CoreData に慣れるにはある程度の時間を費やす必要があります)。さらに、メモリ内で使用するオブジェクトのみを保持することに関するメモリの問題をおそらく処理します。

基本的に、CoreData はオブジェクト グラフです。つまり、必要な場合にのみグラフの一部をロードできます (SQLite ストア タイプの場合)。

あなたが説明したことから、ファイル内のすべてのエンティティをロードせずに、ある種のクエリを使用してアクセスしたい単一のエンティティ (20 列の行) があります。

CoreData に相当するものは次のとおりです。
1) コア データでエンティティを定義します (1 回、モデル デザイナーで)
2) CoreData スタックを作成します (単純な設計の場合、これは自動的に生成されます)
3) を作成しNSPredicateて、好きなインスタンスを選択します
4)NSFetchRequestデータへのアクセスを定義する を作成します
5) を使用してメイン コンテキストでリクエストを実行しNSFetchedReaultsController ます 6) 結果を表示します

コア データを使用する新しいプロジェクトを作成し、これがどのように機能するかの例を確認できます。

于 2013-04-27T18:19:59.523 に答える