2011-09-30 54 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 –

相關問題