2012-02-09 7 views
0

性能上の理由から、膨大な量の任意のバイナリデータにplistやxmlを使用することはお勧めできません。iOS - plistやxmlなどの任意のバイナリデータを大量に処理するフレームワークはありますか?

私のデータフォーマットは、バイナリデータのサイズが数メガバイト(固定ではない)以上で、何百もの人が言うような(いくつかの文字列、整数、バイナリデータ)の配列であるとします。私はシリアライズし、私のドキュメントディレクトリ上の1つのファイルにすべてのデータを格納し、そのファイルからそれらのいくつかだけをメモリに読み込みたい。だから、私は最初にplistを使用して要件を達成する方法だと思ったが、上記のようにそれは良い方法ではない。

問題を回避する1つの方法は、バイナリデータの代わりにバイナリデータのパスを使用し、次にCore Dataなどを使用することです。しかし、それは要件を満たしていません。

私は適切なフレームワークを見つけるために数日間を過ごしましたが、それはないようです。 私のケースでは、独自のエンコードとデコンディングの方法を構築する必要がありますか? NSArchivingは私の要件を達成するのに十分ですか?

答えて

0

XMLまたはテキストのPlistsを使用したくないです。私は私が試みると思うNSCoding &最初の友人は、Archives and Serialization Guideを参照してください。しかし、実際にすべてを1つのファイルに保存してから、その一部だけを読む必要がある場合は、自分で考えてください。データベースについてはどうですか?

+0

zoulにご提案いただきありがとうございます。私はデータベースを使うのは良い考えではないと思います。なぜなら私は各バイナリデータのパスを使うべきであり、私の要求を満足させないからです。 – user1179334

1

NSCodingは実際にはバイナリPlistを作成するので、パフォーマンスは似ています(ビルド時にアプリケーションに埋め込まれたXML Plistsはバイナリに変換されます)。

(FYI、NSCodedファイルをとり、最後に.plistを置くとPlistエディタで開き、すべてのプロパティを見ることができますが、内容は普通のplistのように人間が判読できません) 、

plistは非常に高速ですが、おそらくサイズが数MBのファイルには十分速いでしょう。あなたは実際にこれのためにPlistを使ってみましたか?

もう1つの方法は、JSONファイルを使用してJSONKitで読み込む方法です。 JSONKitは、バイナリplistよりも読み込み速度が速いとベンチマークしました。http://www.cocoanetics.com/2011/03/json-versus-plist-the-ultimate-showdown/

それでも高速ではない場合は、SQLLiteデータベースに格納することをお勧めします。一般的にデータベースはファイルの一部だけを読み込む方がはるかに優れていますが、メモリ全体を読み込む必要がないため、必要な部分だけを取得できます。

関連する問題