Ich habe derzeit eine mobile Anwendung auf dem Textbuch, das die folgende Klasse hat:AS3/Flex - persistNavigatorState + Objekte mit Arraycollection()
[Bindable]
public class Foo
{
public var myString:String;
public var myList:ArrayCollection;
public function Foo() {}
}
Ich habe auch persistNavigatorState="true"
in meinem ViewNavigatorApplication
.
Es wäre in meinem ersten Blick ich in meinem creationComplete="init()"
Aufruf folgende Voraussetzungen erfüllt sein:
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]);
}
Wenn er ausgeführt wird, funktioniert alles in meiner App in Ordnung. Da die Sitzungen jedoch beibehalten werden sollen, wenn der Benutzer die App versehentlich schließt, sollten die Daten beim erneuten Öffnen weiterhin vorhanden sein.
Stattdessen, wenn ich schließe und öffne meine App nur die myString
Eigenschaft (dh Spuren "test_string", wie vorgesehen), aber die ArrayCollection wird nicht kopiert.
Ich habe folgendes mit ObjectUtil.clone()
und ObjectUtil.copy()
versucht:
data.foo.myString = ObjectUtil.copy(s) as String;
data.foo.myList = ObjectUtil.copy(a) as ArrayCollection;
und ich habe auch versucht:
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]);
aber das wirft mich nur Beliebig
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Ideen, wie ArrayCollections und Foo-Klasse in einer mobilen Anwendung beibehalten werden?
Ich habe alle oben genannten versucht und die Dinge arbeiten immer noch in einer sehr wackeligen Art und Weise. Sehr geschätzt, aber ich denke, dass meine ursprüngliche Frage nicht das Problem war, dem ich gegenüberstand. Jetzt geht es eher darum, benutzerdefinierte Objekte in Daten zu speichern (z. B. data.my_custom_object = some_custom_object), um zu speichern und persistent zu bleiben, wenn das Handy ausgeschaltet und eingeschaltet wird. –