2012-02-23 14 views
0

SQL LiteでBLOBまたはテキストにfloatのリストを保存するために理にかなってい - 謝罪ので、これはばかな質問である場合;)が、それは私がiPhoneの開発にはかなり新しいです

私は束を持ってあらかじめ計算された値間の関係をマッピングするためのデータを含む。

ソーラーパネルの電源出力に光入力をマッピングします。他のスケールは、いくつかのデータによって定義されている80.0

-

0.0(すなわち、0.1のステップで上昇し、既知の開始と終了点を有する)固定されており、容易に計算することができる

1つのスケール私はテキスト形式で持っている:

9.80293622028191E + 0000、9.82985159414126E + 0000、9.85682155471754E + 0000、9.88384617060865E + 0000、9.91092551045114E + 0000、9.93805964292038E + 0000、9.96524863673053E + 0000、9.99249256063480E + 0000 、1.00197914834255E + 0001、1.00471454739344E + 0001、1.00745546010324E + 0001等

これを電話で使用して、さまざまな変数の線をプロットすることができます。

テキスト形式の合計データ(データ線当たり32キロバイト程度)4メガバイト

程度で問題がある - とも簡単にロードする - 私は簡単に更新することができる浮動小数点値のアレイは、格納する最善の方法表示のために?

私はそれから単一の値を選ぶ必要はありません - 私はいつも与えられた行のためのリスト全体が必要です - それで、それを単一のデータオブジェクトとして格納するのが理にかなっているようです。私はそれをファイルにテキストとして保存し、それを更新したいときにファイルを上書きすることができます。しかし、 - 私は他のデータのためのSQL LiteのDBが必要になります、そして、これはデータを格納するためにより賢明です。

SQLの浮動小数点データ型を使用するのは非常に重大な方法です。私は常に行の完全な値のセットを望むので、すべての選択は結合となります注文情報を保存して、正しい順序で戻すことができます)

配列全体を文字列にプッシュしてテキストとして保存するのは意味がありますか?または、NSArrayをBLOBフィールドにシリアル化して後で再構築する方法がありますか?

は----- EDITは----------

これは、SQLiteのDBに山車の数千行は携帯電話自体にものすごく遅いことが判明しました。シミュレータでは問題ありませんが、電話機にロードするのに20秒かかります。私はこのデータをフラットテキストファイルに入れて、NSArrayにロードするときにフロートに変換します。

+0

あなたのデータをどのように整理するか分かりません。その「私はいつも与えられた行のリスト全体を必要とするだろう」と私は分かりません。あなたの数値データにM行があり、それぞれがN行の値を持ち、行ごとにこのデータにアクセスするということですか? (IEはルックアップテーブル)。 –

+0

はい - ある種類のキーで特定の行のデータを取得できるようにする必要があります。 1行のデータは、描画ルーチンに渡すためにNSArrayに埋め込むfloat値の順序付きリストです。 –

答えて

1

あなたのアレイを呼び出しアンシリアライズ/シリアライズすることができます

- (NSArray *)componentsSeparatedByString:(NSString *)separator; 

- (NSString *)componentsJoinedByString:(NSString *)separator; 

しかし、私は、ファイル(WRITETOFILE、arrayWithContentsOfFileにあなたの配列を格納)

1のいずれかをお勧めします)

以上

2)値で既存のSQLiteデータベースの値に書き出します。もしあなたが正しいとすれば、あなたはどんな結合も必要としません。

SELECT y FROM data LIMIT start_value, end_value 
+0

#2で同意します。セット以外の値は必要ありませんが、個別に格納するのはsqliteの中で最も悪用され、データの異なるスライスが必要な場合はおそらくサブセット、逆の順序であれば最も柔軟です。 – kevboh

+0

各値には、それがどのデータラインであるかを判断するためのキーが必要ですが、それは簡単です - 注文のキーも必要でしょうか?値が上がったり下がったりすることがありますので、値を順序付けすることで元の順序は得られません - あるいは、SQLiteは挿入順に行を返すことを保証しますか? 私は、各行のこのメタデータでも、文字列に変換するよりもディスク上のサイズが小さくなっていると思います - それは行く方法かもしれないようです。 –

+0

注文が保証されているかどうかわかりませんが私の経験ではxをキーとして追加しなくても動作します。 –

関連する問題