1

OS X で最新の Mobile SDK (1.6) を使用しています。次のコードがあります。

var globalArray = [
        {title:'foo',value:'yes'},
        {title:'bar',value:'no'}
]; 

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
Titanium.App.Properties.getList('globalArrayProperty')[0].value = 'it works!';
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);

問題がどこにあるかを説明できるように、簡略化しました。そこで、いくつかのオブジェクトを含む配列を作成します。次に、この配列に応じてプロパティを設定し、新しい値を最初のオブジェクトに影響を与えます。しかし、'it works!' を表示する代わりに、ディスプレイをプロパティと呼ぶと、文字列、最初の 'yes' を示します。

数行追加してみました:

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
var arr = Titanium.App.Properties.getList('globalArrayProperty');
arr[0].value = 'it works!';
// This works
Titanium.API.info('first value with arr: ' + arr[0].value);
// This doesn't work
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);

したがって、中間変数「arr」はプロパティを取得して設定しますが、プロパティに変更を適用することはできません。

何か不足していますか?

ありがとう、

よろしく。

4

1 に答える 1

3

配列を更新した後、プロパティリストを再度設定する必要があると思います

Titanium.App.Properties.setList('globalArrayProperty',globalArray);
var arr = Titanium.App.Properties.getList('globalArrayProperty');
arr[0].value = 'it works!';
// This works
Titanium.API.info('first value with arr: ' + arr[0].value);

// save changes to property list
Titanium.App.Properties.setList('globalArrayProperty',arr);

// This doesn't work
Titanium.API.info('first value : ' + Titanium.App.Properties.getList('globalArrayProperty')[0].value);
于 2011-02-28T12:10:13.083 に答える