1

공유 객체를 저장하고 검색하는 데 문제가 있습니다.공유 오브젝트에 저장된 오브젝트는 다시 시작한 후에도 데이터 유형을 유지하지 않습니다. 어떤 아이디어?

내가 공유 객체하게 예를 들어

: 다음

var myData:SharedObject = SharedObject.getLocal("myData"); 

을, 나는 객체,이 경우, "깃털"listcollection 객체가

var lc:ListCollection = new ListCollection() 

다음을 지정합니다

myData.data.lc = lc; 

지금 전화를 다시 시작하지 않으면 (안드로이드에서 작업 중입니다) 저장된 listCollection을 l에 할당하면 istCollection의 VAR하고 같이 잘 작동 :

var lc:ListCollection = myData.data.lc as ListCollection; 

그러나 나는 전화를 다시 시작하고이 작업을 수행 할 경우 :

var lc:ListCollection = myData.data.lc as ListCollection; 

그것은 내가 그것을 캐스팅 경우에도 "ListCollection"로 인식하지 않습니다. 그것은 "Object"로 저장되었다고 말합니다

기본적으로 재시작을 통해 dataType을 저장하지 않습니다. 하지만 다시 시작하기 전에로드하면 작동합니다 ...

SharedObject가 작동하지 않는 이유는 무엇입니까? 그것은 전형적인 객체와 잘 동작합니다. 데이터를 로컬에서 저장하고 검색 할 수있는 더 좋은 방법이 있습니까? 그러면 데이터 유형이 변경됩니까?

답변

1

AS3 랭 심판 : - 등등 배열, 숫자, 부울,이 ByteArray, XML 및

각 속성은 어떤 액션 또는 JavaScript 유형의 객체가 될 수 있습니다. 예를 들어, 다음 예제는 공유 객체의 다양한 속성에 값을 지정합니다

시도가 된 ByteArray을 사용합니다.객체를

  var list:ArrayList = new ArrayList(["test"]); 
      var buffer:ByteArray = new ByteArray(); 
      buffer.writeObject(list); 
      buffer.position = 0; 

      var mySo:SharedObject = SharedObject.getLocal("application"); 
      mySo.data.list = buffer; 
      mySo.flush(); 

및 읽기 : SO에서 오브젝트를 작성하는 방법

사용자 정의 클래스를 사용 registerClassAlias에 대한
  var mySo:SharedObject = SharedObject.getLocal("application"); 
      var buffer:ByteArray = mySo.data.list; 
      var result:ArrayList = ArrayList(buffer.readObject()); 

, 개밥 바라기 주석을 참조하십시오.

1

공유 객체를 가져오고 설정하기 전에 registerClassAlias()으로 전화하십시오.

Manual

0

내가 SharedObject를 어떤 형태 정보, 이것은 자신의 직렬화 직렬화 프로세스를 만드는 것입니다 주위에 이동하는 가장 좋은 방법은 절약 생각하지 않는다 - 나는 SharedObject를이 객체를 통해 순진 깊은 반복 할 것입니다 생각을하고, 그것을 직렬화하려고하십시오.

개체를 저장하기 위해 다른 형식을 사용하기로 결정한 경우를 대비하여 개체를 기본이 아닌 구현으로 변환하는 방법을 사용하는 것이 좋습니다. 네이티브 JSON 인코딩/파싱 - SharedObject가 클래스 정보를 저장 했더라도 개인 변수를 어떻게 결정할 것인가?

예 :

SerializableListCollection extends ListCollection { 

    public function serialize():Object { 
    var children:Array = []; 

    // loop and add children 
    children.push(child.serialize()); 

    return { 
     children: children; 
    } 
    } 
} 

이 그럼 당신은 JSON :: 캐릭터 라인 화 저장할 수 있습니다 (ListCollection.serialize을()) 어떤 구현에 연결되지 않은 방식으로 데이터를 저장합니다. SharedObject를 데이터에 대한

0

myData에 모든 데이터를 지정한 후에 myData.flush()을 실행해야합니다.