В настоящее время в плейбуке есть мобильное приложение следующего класса:
[Bindable]
public class Foo
{
public var myString:String;
public var myList:ArrayCollection;
public function Foo() {}
}
У меня также есть persistNavigatorState="true"
в моем ViewNavigatorApplication
.
Предположим, что в моем первом представлении у меня есть creationComplete="init()"
вызов:
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]);
}
При выполнении все отлично работает в моем приложении. Однако, поскольку я хочу, чтобы сеансы сохранялись на случай, если пользователь случайно закроет приложение, при повторном его открытии данные все еще должны быть там.
Вместо этого, когда я закрываю и снова открываю свое приложение, сохраняется только свойство 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: Ошибка # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект.
Есть идеи, как сохранить класс ArrayCollections и Foo в мобильном приложении?