2011-09-30 55 views

回答

3

EncryptedLocalStore.setItem()方法在存储内容时需要一个字节数组。要存储数组,只需使用ByteArray.writeObject()方法(如http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html#writeObject()中所述)将Array转换为ByteArray,然后将其保存到ELS中。

var array:Array = getArray(); 
var byteArray:ByteArray = new ByteArray(); 
byteArray.writeObject(array); 
EncryptedLocalStore.setItem('somekey', byteArray); 

希望这会有所帮助。

更新:添加代码以检索数组。

var byteArray:ByteArray = EncryptedLocalStore.getItem('somekey'); 
var array:Array = byteArray.readObject() as Array; 

更新:用于自定义类。

如果要将自己的自定义类序列化为ByteArray,则可能必须在将对象写入ByteArray之前调用registerClassAlias()。例如。

registerClassAlias("com.example.eg", ExampleClass); 
+0

我会好奇的知道这是否适合你。过去我一直没有用这种方法运气。尽管我会在2年前从HTML/JS AIR应用程序中指出我正在做这件事,所以有可能我做错了,它与JS对象的工作方式不一样,或者它很长 - 固定的错误。 –

+0

我对byteArrays很陌生,一般来说as3只是一个数组。你可能会添加一种方法让我恢复阵列吗?如果我正确分析它,您发布的方法仅用于存储数组。 –

+2

@JasonDean我以前使用过这种方法,它适用于我。如果您使用自定义对象进行保存,则需要在将对象转换为ByteArray之前调用registerClassAlias()。例如,registerClassAlias(“com.example.eg”,ExampleClass); – sangupta

0

我发现最简单的方法是将数组序列化为字符串,然后将该字符串存储在ELS中。然后当你把它反序列化回到一个数组。

+0

你如何实际“序列化”和“反序列化”数组?使用哪些功能?等 –

+0

如果你有as3corelib你可以使用它来序列化。 http://ntt.cc/2008/10/06/as3corelib-tutorial-how-to-use-json-class-in-flex.html –

相关问题