FlexでSharedObjectにカスタムクラス型を保存するには?
Flex(AS3)でSharedObjectにカスタムクラス型を保存する必要が出てきた。
今回のケースではカスタムクラスを集めたArrayCollectionを保存したかったのだけど、これをSharedObjectに保存すると次に読み込んだ時にArrayCollectionの中身はObject型になってしまう。
Object型で保存されていても、元のデータを読み込むことはできた。しかし、データを書き込む事ができない。そこで、カスタムクラス型にキャストしようとして
やはり、何とかSharedObjectにCustomClass型で保存する必要がある。
そこで、SharedObjectを保存する前にこうした。
なにげに、このようなケースは初めてだった(^^);
今回のケースではカスタムクラスを集めたArrayCollectionを保存したかったのだけど、これをSharedObjectに保存すると次に読み込んだ時にArrayCollectionの中身はObject型になってしまう。
Object型で保存されていても、元のデータを読み込むことはできた。しかし、データを書き込む事ができない。そこで、カスタムクラス型にキャストしようとして
var customClass:CustomClass = object as CustomClass;とするとcustomClassはnullとなるし
var customClass:CustomClass = CustomClass(object);では強制型変換に失敗する。
やはり、何とかSharedObjectにCustomClass型で保存する必要がある。
そこで、SharedObjectを保存する前にこうした。
registerClassAlias("CustomClass", CustomClass);
これでArrayCollectionに入っているCustomClassをvar so:SharedObject = SharedObject.getLocal("MyApp");
var ac:ArrayCollection = so.data.arraycollection;
var object:Object = ac.getItemAt(0);
var customClass:CustomClass = object as CustomClass;
として得ることができ、データの書き込みもできるようになった。なにげに、このようなケースは初めてだった(^^);
コメント
コメントを投稿