iPhone SDK: Daten speichern
Neben der Eingabe und Verarbeitung von Texten mit Xcode ist ein weiteres Basiselement das Speichern von Informationen und Daten. Hierzu bietet das iPhone SDK einige sehr nette Funktionen und Methoden die beispielsweise das Speichern von Informationen auf einem externen Server erlauben dies ermöglicht beispielsweise einen globalen Speicherort für Highscores. Wird dieses nicht benötigt können Daten natürlich auch ganz normal auf dem iPhone gesichert werden.
Zu Anfang dieses Tutorials wird erstmal nur ein Text aus einer Variable gesichert. Anschließend machen wir dieses etwas umfangreicher indem wir einen Text aus einer Text View nach einem Buttonklick speichern. Starten Sie eine neues Projekt und öffnen Sie den Interface Builder und platzieren Sie einen Button und ein Text View auf dem Window.
Öfffnen Sie anschließend die Klasse *.h und erstellen Sie eine Instanzvariable für den Button und das Text View und weisen eine Property zu.
UIButton *bSave;
UITextView *tvInput;
@property(nonatomic, retain) IBOutlet UIButton *bSave;
@property(nonatomic, retain) IBOutlet UITextView *tvInput;
Jetzt benötigen Sie noch eine Methode die von einem Button Event ausgelösst wird. Gehen Sie hierzu in die Implementierungsdatei in diesem Fall saveAppDelete.m ( *.m ) und erstellen Sie eine Methode.
- (IBAction)bSaveClicked:(id)sender {
// Weiterer Code folgt
}
Bedenken Sie das die Variable natürlich noch in der Header ( *.h ) Datei defniert bzw. deklariert werden muss.
- (IBAction)bSaveClicked:(id)sender;
Wenn Sie das getan haben müssen Sie die Verbindung zwischen der Instanzvariable bSave und dem Button auf dem Window herstellen. Das machen Sie über den Interface Builder indem Sie einen rechtsklick auf den App Delegate machen und dann via Drag and Drop die Verbindung zwischen der Variable und dem Button herstellen.
Da jetzt die Vorarbeiten abgeschlossen sind kommen wir zum wesentlich Teil, das Speichern von Daten. Gehen Sie hierzu wieder zu der Methode bSaveClicked die oben erstellt wurde. Hierzu erstellen wir einen String und weisem diesem den Text des Text Views zu.
NSString *strText = [tvInput text];
Jetzt müssen Sie den Pfad der Textdatei bzw. der Datei festlegen in der der Text gespeichert werden soll. Erstellen Sie hierzu eine zusätzliche Variable indem der Pfad der Speicherorts festgelegt wird.
NSString *strPath = [NSHomeDirectory() stringByAppendingString:@"text.txt"];
Jetzt wurde der Pfad für die Textdatei festgelegt und jetzt kann der Inhalt des Textes gespeichert werden. Verwenden Sie hierzu die Funktion writeToFile. Da derzeit noch keine Fehler behandelt bzw. ausgewertet wird die Fehlerrückmeldung mit error:nil ausgeschaltet. Wir benutzen hier atomically, da die Stabilität so gewährleistet ist während etwas gespeichert wird. Hierzu wird erst eine Tempdatei erstellt indem die Werte erst zwischengespeichert werden. Das bedeutet also wenn die Applikation aus welchen Gründen auch immer mal abstürzen sollte besteht die alte Datei noch und so bleibt die Applikation funktionsfähig. Würde man dies nicht machen wäre die Datei fehlerhaft und somit könnte die Applikation abstürzen.
[strText writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil]
Starten Sie jetzt die Applikation können Sie den Textinhalt aus dem Text View in der definierten Textdatei text.txt speichern. Im nächsten Tutorial werden wir diese Daten auslesen und weiterverarbeiten.