2017-02-23 125 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{} 

那么它可以被安全地保存,即使我关闭该应用。由于我找不到有关此代码行为的任何信息,所以我想在此寻找意见!