2012-02-24 10 views
2

私のバンドルに大きなテキストリソースがあります。大きなテキストリソースをiOSのアレイに読み込む

0,1,100,2.2345 

のような行を含むCSVです。9MBを超えています。開いて、順次ので、私のようなものを行うことができ、それを読むための最良の方法は何です:(。単にファイル内の整数でインデックス化多次元配列のうちの1つにfloat値を詰め込む)

myObject->initData(col0, col1, col2, col3); 

[NSString stringWithContentsOfFile:]を使用して文字列に読み込み、それをループするのにNSScannerを使用してみましたが、一時的であってもメモリ使用量を倍増させたくありません。それはまたかなり遅かった。

これを行うにはどうすればよいですか?

おかげ

答えて

3

あなたはインクリメンタル読むためにNSFileHandleまたはC APIを使用することができ、またはあなたがNSDataとのmmapを使用することができます。

残りは基本的なcstringバッファ処理です。または、NSString行ごとに使用できます。

CSVではなくバイナリ浮動小数点数列としてエクスポートすることができれば、その人生はより簡単になります。

+0

ありがとうございました。私はメモリマップされたデータを使用したくないので、NSFileHandleアプローチを試して、順次読み込みます。他の誰かが他のアイデアを持っているかどうかを見るためにこれを1日ほど開いたままにしておきます(私が考えることができるすべての基盤をカバーしていますが、あなたは決して知ることはできません)。 –

+0

Cバッファハンドリング( 'fopen'、' fgets'等)が最後に働いた。ありがとう。 –

+0

@Tim Kemp Cool - ようこそ! – justin

関連する問題