2017-02-23 55 views
0

我試圖讓一個對象具有一些在構造函數中初始化的不可變屬性,並且在啓動後將不能更改。那些屬性只有getter方法。因爲我希望這個對象可以與其他類共享,所以我將它保存到名爲saveIt()的SharedObject類中。SharedObject不安全地保存數據?

在iOS上運行應用程序時(我沒有在Android上測試它),所有工作都很好,除非如果我完全關閉應用程序並重新打開應用程序,那些沒有setter的屬性會丟失。該代碼是如下:

  var rooms:ArrayCollection = saveData.read("rooms") as ArrayCollection; 
      if (!roomExists) { 
       var room:Room; 
       room = new Room(myID, myName, maxRoomSize); 

       room.name = rm.name; 
       room.timestamp = new Date(); 
       room.joinUrl = rm.joinUrl; 
       room.attendeeUrl = rm.attendeeUrl; 
       room.attendees = conferenceParameters.metadata.hasOwnProperty("attendees") ? conferenceParameters.metadata["attendees"] : null; 

       rooms.addItem(room); 
      } 
      saveIt.save("rooms", rooms); 
+0

是否在保存任何事情後刷新了** SharedObject? –

+0

我刷新SharedObject然後再讀取它,如果應用程序保持活動狀態,或者沒有setter的屬性將丟失,那麼可以。它可以通過設置兩組屬性來複制,其中一組與另一組屬性不同。具有setter的屬性將始終存在,而其他屬性則不會。 –

回答

0

我發現如果我分配一個虛設設置器爲每個不可變屬性即

function set myID(s:String):void{} 

那麼它可以被安全地保存,即使我關閉該應用。由於我找不到有關此代碼行爲的任何信息,所以我想在此尋找意見!