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;として得ることができ、データの書き込みもできるようになった。
なにげに、このようなケースは初めてだった(^^);
コメント
コメントを投稿