2011-10-27 53 views
3

我想在Flex 4.5移动项目中使用SharedObject。 我使用的SDK是4.5.1,AIR版本是2.6.0。Flex 4.5 iOS移动项目:SharedObject问题

我试图使用这段代码在本地存储用户凭据我的应用程序:

var so:SharedObject = SharedObject.getLocal("cred"); 
so.data.user = txtUser.text; 
so.data.password = txtPass.text; 
so.data.rememberMe = isLoginRemembered.selected; 
var result:String = so.flush(); 

之后,当应用程序加载一遍, 我想用我以前保存的共享对象的凭据,所以用户不需要每次输入他的凭证。

var so:SharedObject = SharedObject.getLocal("cred"); 
txtUser.text = so.data.user; 
txtPass.text = so.data.password; 
isLoginRemembered.selected = so.data.rememberMe; 

但这似乎并没有工作,用户&密码从未保存,因而无效。 如果我在我的文件系统(Mac OSX)上查找cred.sol文件,我甚至找不到该文件! 这一切虽然'结果'字符串表示“刷新”。

我在Mac上开发这个应用程序,并想部署到iOS。

有什么建议吗?

+0

也许它在模拟器中不起作用。你尝试过真正的设备吗? –

+0

我还没有在真实设备上试过它。 我想它是无关紧要的,如果它是一个模拟器或真正的设备, 模拟器应该模仿所有设备的功能....因为,那,这是什么模拟器:) 也许你知道比我更多,那么请赐教。 – eMx

回答

5

我解决了这个问题!

我正在使用Flash Builder 4.5开发此应用程序,并且我为iPhone4制作了一个调试/运行配置。
现在,当您指定运行/调试配置时,您可以选中一个复选框'每次启动时清除应用程序数据'。这个复选框需要UNCHECKED,因为这会在每次启动应用程序时清除你的SharedObject!

要访问Flash Builder 4.5中的此配置屏幕,请单击运行/调试按钮旁边的小箭头,然后单击运行/调试配置。导航至您指定的配置,并取消选中该复选框!

瞧!享受你的iOS SharedObject真棒!

+1

请务必将此标记为未来搜索者的正确答案。 – JeffryHouser

+0

@eMx。你做了很棒的工作。这个问题浪费了我2个小时才弄清楚,然后我按照你在ans中的定义解决它。 –

0

首先,如果您要存储密码,您应该使用加密。我不确定您的LSO问题,但我认为本地加密商店可能是一个答案,我认为它受iOS和AIR 3.0支持。您也可以使用加密的SQL Lite数据库。这个答案对一些信息:EncryptedLocalStore not supported

编辑:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/data/EncryptedLocalStore.html

根据这一支撑于一切,但电视的文档。所以所有的手机现在都应该有EncryptedLocalStore,但是你需要切换到Air3。

+0

首先它应该工作,然后正确:-) –

+0

尽管您的建议可能值得考虑;这不是问题的答案。它没有解决不能在iOS上工作的基础问题。 – JeffryHouser

+0

嗨@Jonathan,感谢您花时间研究这个问题。我知道我必须使用本地加密存储来保存密码, ,但我为他的计算机上的客户端提供此应用程序而没有任何管理权限。所以我坚持使用AIR 2.6。加密的SQL Lite数据库对于保存这样一小部分数据似乎是一个矫枉过正。 – eMx