私は現在、以下のクラスを持っている脚本のモバイルアプリケーションを持っている:AS3/Flexの - persistNavigatorState +のArrayCollection(とオブジェクト)
[Bindable]
public class Foo
{
public var myString:String;
public var myList:ArrayCollection;
public function Foo() {}
}
私はまた私のViewNavigatorApplication
でpersistNavigatorState="true"
を持っています。
private function init():void {
var s:String = "test_string";
var a:ArrayCollection = new ArrayCollection();
a.addItem("test1");
a.addItem("test2");
a.addItem("test3");
data.foo = new Foo();
data.foo.myString = s;
data.foo.myList = a;
trace(data.foo.myString);
trace(data.foo.myList[0]);
trace(data.foo.myList[1]);
trace(data.foo.myList[2]);
}
実行すると、すべてが私のアプリでは正常に動作します:
は私creationComplete="init()"
呼び出しで、次のしている私の最初のビューでと仮定します。しかし、ユーザーが誤ってアプリを終了した場合にセッションを維持したいので、再開時にデータが残っているはずです。
代わりに私のアプリケーションを閉じて再オープンすると、myString
プロパティだけが残っています(つまり、 "test_string"をトレースします)が、ArrayCollectionはコピーされません。
私はObjectUtil.clone()
とObjectUtil.copy()
で次のことを試してみた:
data.foo.myString = ObjectUtil.copy(s) as String;
data.foo.myList = ObjectUtil.copy(a) as ArrayCollection;
をし、私も試してみた:
var f:Foo = new Foo();
f.myString = s;
f.myList = a;
data.foo = ObjectUtil.copy(f) as Foo;
trace(data.foo.myString);
trace(data.foo.myList[0]);
が、これは私だけ
TypeError: Error #1009: Cannot access a property or method of a null object reference.
どれをスローしますArrayCollectionsとFooクラスをモバイルアプリケーションに永続化する方法に関するアイデア
私は上記のすべてを試しましたが、物事はまだ非常にうんざりした方法で動作しています。非常に感謝していますが、私の元の質問は私が直面していた問題ではなかったと思います。現在、カスタムオブジェクトをデータに保存しておくこと(つまり、data.my_custom_object = some_custom_object)は、モバイルがシャットオフしてオンになったときに保存して保持することが多いです。 –