В настоящее время у меня есть мобильное приложение в playbook со следующим классом:
[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 в мобильном приложении?