Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-08-2011, 16:45   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
AIR 2.7 > Apple iOS für iPad: Lokales speichern von Daten

Ich habe die Aufgabe, eine Anwendung, die ich bereits in Air entwickelt habe, für iOS zu portieren (iPad 2, iOS 4).
Die Anwendung ist eine kleine Marktforschungsanwendung in welcher Fragen beantwortet werden und am Ende das Ergebnis (gesammelte Variablen) als simple Textdatei gespeichert werden soll. Der Name der Datei wird entsprechend dem Datum und der aktuellen Uhrzeit benannt, so dass jede zu speichernde Datei einen individuellen Namen hat.

Nun scheint iOS ja recht restriktiv mit dem lokalen Speichern von Daten umzugehen. Wie kann ich da vorgehen? Ich habe gelesen, dass das Speichern von Daten im lokalen App-Ordner möglich sein soll. Aber wie kann ich die dann später wieder abrufen? Ich bin im Bereich iOS Entwicklung absoluter Anfänger



Hat da jemand eine Idee? Ich hoffe, das geht irgendwie…

Vielen Dank schon mal…
Börje ist offline   Mit Zitat antworten
Alt 22-08-2011, 19:37   #2 (permalink)
?-Developer
 
Registriert seit: Jul 2004
Ort: Zuchwil (CH)
Beiträge: 901
Schau doch mal folgendes an:
flash.filesystem.File - ActionScript® 3.0 Reference for the Adobe® Flash® Platform

ActionScript:
  1. File.applicationStorageDirectory

Es ist nur an diesem Punkt erlaubt zu schreiben. Am Ort der App selber hat es bei mir auch noch nie funktioniert.
__________________
Nur tote Fische schwimmen mit dem Strom
silentx ist offline   Mit Zitat antworten
Alt 22-08-2011, 19:52   #3 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.498
Kennt ihr diesen Artikel? Saving state in AIR applications for iOS devices | Adobe Developer Connection
File.applicationDirectory geht soweit ich mich erinner generell nicht, auch nicht auf dem Desktop.

mfg

sx
__________________

flintfabrik.de

Geändert von shin10 (22-08-2011 um 19:54 Uhr)
shin10 ist gerade online   Mit Zitat antworten
Alt 22-08-2011, 21:30   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
Danke für die Antwort.

Wird dabei nur der "Stand der Dinge" gespeichert und wieder abgerufen?
Ich habe im Endeffekt vor, am Ende des Tages eine gewisse Menge Text-Files zu haben, die ich abrufen kann , um diese weiter zu verarbeiten. Es soll also kein temporäres Abspeichern sein, das dann von der gleichen App wieder abgerufen wird.

Ich werde es aber genau unter die Lupe nehmen.
Börje ist offline   Mit Zitat antworten
Alt 23-08-2011, 06:46   #5 (permalink)
?-Developer
 
Registriert seit: Jul 2004
Ort: Zuchwil (CH)
Beiträge: 901
Also wenn du im Apple-AppStore wTicTacToe suchts findes du meine erste App welche die jeweiligen Einstellungen auf dem iPhone Speichert. Wenn du diese jedoch löschst und wieder neu installierst sind natürlich auch diese Einstellungen wieder weg.
Das Handling ob eine Datei entfernt, überschrieben oder gelöscht wirst bestimmst aber im Betrieb du selbst. Die File-Klasse beschreibt dies ziemlich gut.
__________________
Nur tote Fische schwimmen mit dem Strom
silentx ist offline   Mit Zitat antworten
Alt 24-08-2011, 14:05   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
OK. Danke.
Was mir absolut fehlte, war die Tatsache, dass ich in der App erstmal das File Sharing in der .XML aktivieren muss.
Der entsprechende Bereich in der XML sieht dann bei mir so aus:
HTML-Code:
<InfoAdditions> <![CDATA[<key>UIFileSharingEnabled</key><true/><key>UIDeviceFamily</key><array><string>2</string></array>]]></InfoAdditions>
Allerdings bekomme ich keine Datei gespeichert. Hier mein Code in der FLA diesbezüglich:

HTML-Code:
import flash.filesystem.*; 
var file:File = File.documentsDirectory.resolvePath("test.txt");
In Adobe Air auf 'nem Windows-Rechner hat das problemlos funktioniert. Da hatte sich allerdings ein Fenster geöffnet, wo dann gefragt worden ist, wohin gespeichert werden soll. Mir ist klar, dass das hier nicht der Fall sein wird.
Börje ist offline   Mit Zitat antworten
Alt 24-08-2011, 14:26   #7 (permalink)
?-Developer
 
Registriert seit: Jul 2004
Ort: Zuchwil (CH)
Beiträge: 901
Warum versuchst du es nicht einfach mit dem wo ich schon geschrieben habe?
ActionScript:
  1. File.applicationStorageDirectory
__________________
Nur tote Fische schwimmen mit dem Strom
silentx ist offline   Mit Zitat antworten
Alt 24-08-2011, 14:51   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
Habe ich auch schon versucht.
Hier nochmal der komplette Code. Vielleicht übersehe ich etwas oder habe etwas vergessen:

HTML-Code:
import flash.filesystem.*; 
var file:File = File.applicationStorageDirectory.resolvePath("test.txt");

save_btn.addEventListener(MouseEvent.CLICK,
						function(evt:MouseEvent){
							file.save(savetext);
						});
"savetext" ist hierbei eine Variable (String), die aus einer Aneinanderreihung von Texten besteht.

Hier hat es auch keinen Unterschied gemacht, ob ich "applicationStorageDirectory" oder ob "documentsDirectory" eingesetzt habe…
Börje ist offline   Mit Zitat antworten
Alt 24-08-2011, 16:22   #9 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.498
Das ist der ganze code den du hast? Wo ist dein FileStream? Hast du schon mal einen Speichern-Unter-Dialog auf dem iPhone gesehen? Also ich nicht ...

Und wo schaust du dann nach, ob die Datei existiert?
__________________

flintfabrik.de

Geändert von shin10 (24-08-2011 um 16:27 Uhr)
shin10 ist gerade online   Mit Zitat antworten
Alt 24-08-2011, 16:25   #10 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
Zitat:
Zitat von shin10 Beitrag anzeigen
Das ist der ganze code den du hast? Und wo schaust du dann nach, ob die Datei existiert?
Nein. Ist natürlich nicht der komplette Code, aber der hierfür relevante.
Ich schaue in iTunes nach, ob die Datei existiert. Unter Dateifreigabe bei der entsprechenden App müsste die Datei ja angegeben sein.

Oder bin ich jetzt komplett auf dem falschen Dampfer?
Börje ist offline   Mit Zitat antworten
Alt 24-08-2011, 16:33   #11 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.498
Sorry, da war ich mit dem Editieren zu langsam: FileStream! Du brauchst einen FileStream - hab dir doch ein Bsp. gelinkt.
__________________

flintfabrik.de
shin10 ist gerade online   Mit Zitat antworten
Alt 24-08-2011, 16:45   #12 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
OK. Sorry. Dann habe ich da was durcheinandergebracht.

Schaue ich mir dann nochmal in Ruhe an…

Wenn ich das richtig verstehe, muss ich den FileStream generieren und brauche ja dann nur noch die save Funktion, die ich dann in meinem Button einbinde, richtig?
Börje ist offline   Mit Zitat antworten
Alt 24-08-2011, 20:11   #13 (permalink)
?-Developer
 
Registriert seit: Jul 2004
Ort: Zuchwil (CH)
Beiträge: 901
Ich hab dir hier mal mein Beispiel: (Natürlich nicht 1:1 kopierbar)

ActionScript:
  1. // Datei Schreiben
  2. var fl:File = File.applicationStorageDirectory.resolvePath("properties.xml");
  3. var fls:FileStream = new FileStream();
  4. fls.open(fl, FileMode.WRITE);
  5. fls.writeUTFBytes(_propertiesXML.toXMLString());
  6. fls.close();
__________________
Nur tote Fische schwimmen mit dem Strom
silentx ist offline   Mit Zitat antworten
Alt 25-08-2011, 00:36   #14 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
Es scheint nach wie vor nicht zu klappen. Hier mein Code:

HTML-Code:
import flash.filesystem.*; 
var myfl:File = File.applicationStorageDirectory.resolvePath("test.txt");
var myfls:FileStream = new FileStream();
var teststring_txt:String = "testtext"; 

save_btn.addEventListener(MouseEvent.CLICK,  				
		function(evt:MouseEvent){  							
		myfls.open(myfl, FileMode.WRITE);
		myfls.writeUTFBytes(teststring_txt);
		myfls.close();   							
	 }); 
Nach dem klicken auf meinen Button müsste doch dann ein File generiert werden namens test.txt. Tut's aber nicht…
Börje ist offline   Mit Zitat antworten
Alt 19-09-2011, 01:08   #15 (permalink)
Neuer User
 
Registriert seit: Jun 2008
Beiträge: 11
So. Nach langem hin und her habe ich des Rätsels Lösung:

Das Ganze funktioniert bei mir mit documentsDirectory und nicht mit applicationStorageDirectory!

Der Code lautet dann:

Code:
import flash.filesystem.*; 

function saveFile():void
     {                 
     var outputFile:File = File.documentsDirectory.resolvePath("test.txt");
     var outputStream:FileStream = new FileStream();
     outputStream.open(outputFile,FileMode.WRITE);
     outputStream.writeUTFBytes(savetext);
     outputStream.close();
}

saveFile();
Börje ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
abruf, air 2.7, ios4, speichern, speicherort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Speichern Daten Mando ActionScript 3 8 25-02-2011 13:53
Speichern von Daten in xml? Jakozk Flash Einsteiger 5 23-04-2006 21:35
lokales Speichern und Wiederverwenden des sharedObject aBernhardt ActionScript 1 3 17-11-2005 15:05
Daten speichern! Globaltek Flash MX 2004 1 12-04-2005 10:49
Lokales Speichern/Exportieren geht, auf Netzlaufwerken aber nicht matiz Flash 4 und Flash 5 2 07-11-2003 10:01


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele