Search code examples
iosactionscript-3airadobe

Adobe AIR 3.4 saving/writing XML data to iOS


I'm trying save XML data to an iPad 4 with AIR 3.4 for iOS and really can't tell if this is working or not. No events are being fired apparently. Any help is greatly appreciated.

    private function saveData(e:MouseEvent):void {




        var name:String = AssetManager.SAVE_ANNOTATIONS_NAME            
        var file:File = new File()              
        file = File.applicationStorageDirectory.resolvePath(name + "xml");
        var xml:XML = _canvas.getObjectData(FormatType.DEGRAFA);            
        var fileStream:FileStream = new FileStream();
        fileStream.open(file, FileMode.WRITE);
        fileStream.writeUTF(xml.toString());


        fileStream.addEventListener(ProgressEvent.PROGRESS, onFileStream);
        fileStream.addEventListener(Event.ACTIVATE, onFileStream);
        fileStream.addEventListener(Event.OPEN, onFileStream);
        fileStream.addEventListener(Event.DEACTIVATE, onFileStream);
        fileStream.addEventListener(IOErrorEvent.IO_ERROR, onFileStream);
        fileStream.addEventListener(Event.COMPLETE, onFileStream);



    }

    protected function onFileStream(event:Event):void
    {
        trace('filestream event was ' + event)
        fileStream.close();


    }   

Solution

  • I seemed to have fixed it with this:

        private function saveFile(event:MouseEvent):void
        {  
            var xml:XML = _canvas.getObjectData(FormatType.DEGRAFA);
            trace('xml is ' + xml.toXMLString())
            var file:File = File.documentsDirectory.resolvePath("annotations.xml");         
            var fileStream:FileStream = new FileStream();  
    
            fileStream.openAsync(file, FileMode.WRITE);  
            fileStream.writeUTFBytes(xml.toXMLString()); 
            fileStream.addEventListener(Event.CLOSE, fileClosed);  
            fileStream.close();  
    
            function fileClosed(event:Event):void { 
    
                trace("File Saved");  
    
            }        
        }