2012-03-02 28 views
4

私はiPhone上のSQLiteデータベースに配列を追加しようとしています。つまり、ユーザーが使用したいアレイオブジェクトの数はわかりません。それは1かもしれません、それは10かもしれません。私がSQLiteテーブルで10のフィールドを割り当てた場合、ユーザーが1つを使用するならば9つの無駄になり、10のエントリに上限が入ります。SQLiteに配列を保存する最も良い方法は何ですか?

私は1つのVARCHAR型フィールドを使用し、配列の各オブジェクトに各オブジェクト間に特殊文字を追加することを考えました。これはどのようにパフォーマンスが賢明でしょうか?どんな良いアイデアですか?

答えて

3

NSCoderフレームワークを使用すると思います。 NSArrayのはNSCodingプロトコルに準拠しているように、直列化は、すでにあなたに行われます。デコードは

+0

ああボーイ!私は完全にNSCodingを忘れてしまった!私はこれがトリックをするだろうと思う! – Heartinpiece

+0

厳密に言えば、レコードの他の要素と同じテーブルに配列のフィールドを格納しない方が良いでしょう: – MrTJ

+0

レコード(idなど) 配列(recordId、order、element) 2番目のテーブルに必要な要素を順番に格納することができます。次に、2つのテーブルでJOINを実行します。 – MrTJ

0

OBJECT列として保存できます。

+0

んSQLiteは非常に似ています

NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeObject:myArray forKey:myArchiveKey]; [archiver finishEncoding]; [archiver release]; // write here data object to a BLOB field of your SQLite db 

オブジェクト型のフィールドがありますか? – Heartinpiece

+0

そうだと思います。私はAdobe Airからそれを使って、iOSのために開発し、それをいつも使っています。そうでないと、シーンの裏側にBLOBへの翻訳があります。 – Eduardo

+0

BLOBテーブルを使用することを意味しますか? [SQLiteドキュメンテーション](http://sqlite.org/datatype3.html)はOBJECT型を指定していません。 – Heartinpiece

0

アレイエントリを行として格納できます。

+0

同じ長さの場合のみ...または合理的な最大長を持つ。 – Rig

0

jsonオブジェクト形式で配列を保存し、取得中にjsonオブジェクトを配列に変換できます。

+0

JSONは興味深いアプローチのようですしかし今のところ、まずNSCodingを試してみましょう。ありがとう@パッショネイト! – Heartinpiece

関連する問題