ブラックベリーのベクターに似たsenchaタッチで使用するデータ構造
-
27-10-2019 - |
質問
私はシンチャタッチの初心者です。基本的にはブラックベリーの開発者です。現在、Sencha Touch 1.1をサポートするためにアプリケーションを移行しています。これで、選択した値をローカルデータベースに保存したいようなビジネスソリューションがいくつかあります。私は、ユーザーが各画面で値を選択すると、以下の形式にデータを保存する必要がある複数の画面があるということです。
{'key1': "value1"、 'key2': "value2"、 'key3': "value3"、 'key4': "value4"、 'key5': "value5"}]
1.最初に、値をキー値のペアに保存する必要があります
2.キーはプライマリキーの役割を果たす必要があります。キーを複製してはなりません。
3.アプリケーションのライフサイクルまたはアプリケーションセッションまで利用できるはずです。データを永続的に保存する必要はありません。
LocalStorageProxy、JSonStoreなどのコンセプトに出くわしました。特定の要件に使用できるものがわかりません。
私の質問はもう少し混乱しているかもしれません。 BlackBerry Javaで同じベクトルを使用して同じことを達成したので、これに類似したデータ構造は私を助けることができます。次のような基本操作が必要です
- 作成
- 追加
- 削除する
- すべて削除する
- キーに基づいて要素を取得します
サンプルやコードスナップショットをいくつか提案してください。これを達成するのに役立つかもしれません。
編集:1
@ilya139の答えに従って変更を加えました。今、私はキーでデータを追加することができます、
// this is my Object declared in App.js
NSDictionary: {},
// adding the data to object with key
MyApp.NSDictionary['PROD'] = 'SONY JUKE BOX';
//trying to retrieve the elements from vector
var prod = MyApp.NSDictionary['PROD'];
上記の構文を使用して要素を取得できないナット。
解決
データを永続的に保存する必要がない場合は、必要なプロパティを備えたグローバルオブジェクトを使用することができます。最初にこのようなオブジェクトを定義します。
new Ext.Application({
name: 'MyApp',
vectorYouNeed: {},
launch: function () { ...
次に、このようなオブジェクトにキー値のペアを追加します
MyApp.vectorYouNeed[key] = value;
そして、このようにそれらを取得します
value = MyApp.vectorYouNeed[key];
キーは文字列オブジェクトであることに注意してください var key='key1';
価値はあらゆる種類のオブジェクトにすることができます。
1つの値を削除します MyApp.vectorYouNeed[key] = null;
そしてそれらすべてを削除するために MyApp.vectorYouNeed = {};