尝试在iOS设备上保存文件时出现错误#0

时间:2015-09-21 09:09:35

标签: ios actionscript-3 air

我刚用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吗?谢谢!

3 个答案:

答案 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" );
    }