2010-11-19 14 views
3

Ich öffne und teste Daten mit der FileStream-Klasse, die Dateisicherheitsprobleme vermeiden soll. Es funktioniert gut, bis ich versuche, in einer lokalen Datei zu speichern. Wenn ich unter adl teste, erhalte ich einen Sicherheitsfehler, der in Ordnung war (zumindest versuchte er zu speichern), bis die App auf einem Gerät gepackt und getestet wurde, die Datei jedoch nicht gespeichert werden konnte. Irgendwelche Ideen?AS3 Lokale Datei unter iOS speichern

public class FilesApp extends MovieClip { 

    var file:File; 
    var xmldata:XML; 

    public function FilesApp() { 
     // constructor code 

     LoadButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_load); 
     ParseButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_parse); 
     SaveButton.addEventListener(MouseEvent.MOUSE_DOWN,xml_save); 
    } 
    public function xml_load (e:MouseEvent):void 
    { 
     file = File.applicationDirectory; 
     file = file.resolvePath("./Data/data.xml"); 

     var fileStream:FileStream = new FileStream(); 
     fileStream.open(file, FileMode.READ); 
     var str:String = fileStream.readMultiByte(file.size, File.systemCharset); 
     fileStream.close(); 
     DataText.text = str; 

     xmldata = XML(str); 
     trace('xml file loaded'); 
    } 
    public function xml_save (e:MouseEvent):void 
    { 
     var writeStream:FileStream = new FileStream(); 
     writeStream.open(file, FileMode.WRITE); 
     writeStream.writeUTF("<xml><name>Changed</name><score>5000</score></xml>"); 
     writeStream.close(); 
     trace('xml file saved'); 
    } 
    public function xml_parse (e:MouseEvent):void 
    { 
     trace('xml file saved'); 
     DataText.text = "Your name is:"+xmldata.name+" Your best score is:"+xmldata.score; 
    } 
} 
+0

Verstehen Sie iOS als Apple iPhone/iPad OS? Ich befürchte, dass sie Actionscript nicht unterstützen. – Nevin

+2

Adobe ios packager ist nativ und wurde im September von Apple zugelassen. http://www.adobe.com/devnet/logged_in/abansod_iphone.html – woodscreative

Antwort

0

haben Sie versucht Filereference.save()?

+0

Mmm ... save() scheint keine Methode der fileStream-Klasse zu sein. – woodscreative

+0

Filereference-Klasse – www0z0k

+0

FileReference.Save() fragt den Benutzer nach einem Speicherort. Es ist nicht für diese Verwendung geeignet. –

4

Sie können keine Daten in File.applicationDirectory speichern, es soll unveränderlich sein. Speichern Sie es stattdessen in File.applicationStorageDirectory. Es gibt auch File.documentsDirectory - aktuelle Benutzer Dokumente Verzeichnis, wenn Sie sicher sind, dass Sie es mit Ihren Dateien Müll :)

+0

Wird dies eine Chance geben und sehen, was passiert. – woodscreative

+1

Beachten Sie, dass 'File.documentsDirectory' kein allgemeines Verzeichnis unter iOS ist, sondern ein Unterverzeichnis Ihrer Anwendungs-Sandbox: http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118666ade46-7fe4.html –

+0

Wenn Sie es sind Speichern großer Datenmengen, werfen Sie einen Blick auf [this] (http://blogs.adobe.com/simplicity/2010/01/api_tip_dont_abuse_fileapplica.html), es empfiehlt sich, 'File.documentsDirectory' für große Dateien zu verwenden. –

0

Es schlägt fehl, weil Sie writeUTF verwenden, um das Schreiben und readMultiByte zu tun, um das Lesen zu tun.

Wenn Sie zu readUTF wechseln, wird es funktionieren.

1

Für mich funktionierte der Wechsel zu readUTF().

Außerdem sollten die zwei Zeilen, die "Datei" initialisieren, im Konstruktor sein, sonst können Sie "xml_save" nicht aufrufen (Sie müssen zuerst "xml_load" machen).

Danke