我刚用Air创建了一个iOS和Android应用程序(SDK 18) 在尝试保存首选项文件时,我收到错误#0(有时 - 不一致)。 代码很简单:
private static var _file:File=File.applicationStorageDirectory.resolvePath(CONFIGFILE);
private static function saveFile():void{
var fileStream:FileStream = new FileStream();
if(File.applicationStorageDirectory.spaceAvailable>1024){
fileStream.open(_file, FileMode.WRITE);
fileStream.writeUTFBytes(Base64.encrypt(JSON.stringify(ob),Strings.HASHSALT));
fileStream.close();
}else{
showLowSpaceAlert()
}
}
在Android上eveything工作正常,在iOS上50%的时间没有问题... 有人知道这个bug吗?谢谢!
答案 0 :(得分:0)
不要尝试使用静态变量创建File对象,在app init time期间创建静态对象,并且可能会出现计时问题。您的问题是由于您的代码逻辑。
正确的方法是:
private static var _file:File;
然后:
private static function saveFile():void
{
if(!_file)
{
_file = File.applicationStorageDirectory.resolvePath(CONFIGFILE);
}
//etc ...
}
答案 1 :(得分:0)
问题已在Adobe Forum上提出,OP倾向于说这个问题是因为iOs设备湖泊的自由空间。
您应该考虑在设备上释放一些内存。
答案 2 :(得分:0)
当设备空间不足时,我才得到这个错误。你可以试试这些电话......
trace( File.applicationStorageDirectory.spaceAvailable );
trace( File.cacheDirectory.spaceAvailable );
...获取可用空间的字节数。例如......
var data:String = Base64.encrypt(JSON.stringify(ob),Strings.HASHSALT);
if ( data.length > File.cacheDirectory.spaceAvailable )
{
trace( "NOT ENOUGH SPACE" );
}
else
{
trace( "OK TO SAVE" );
}