• Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Wie schreibe ich Strings Line-by-Line in eine .txt File?

ApfelFreak111

Erdapfel
Registriert
08.03.13
Beiträge
3
Hallo!
Mein Problem ist folgendes:
Ich möchte den aus einem TextView in einer .txt - File speichern und später wieder auslesen.
Es soll so funktionieren, dass ich in einem View ein TextView habe. Wenn ich auf einen Button drücke, erscheint immer ein anderer Text im TextView. Wenn man dann auf einen anderen Button drückt, soll der Text, der gerade im TextView zu lesen ist, in die erste Zeile einer .txt Datei gespeichert werden. Wenn man bei einem anderen Text wieder auf diesen Button drückt, soll der Text in die zweite Zeile in der .txt Datei gespeichert werden, und so weiter.
In einem anderen View soll der Text der ersten Zeile (in der .txt Datei) dann in einem zweiten TextView angezeigt werden. Dort kann man wieder auf einen Button drücken, sodass der Text in der zweiten Zeile dasteht. Wie ich letzteres mache, weiß ich schon. Meine Fragen sind also:

Wie speichere ich Strings line-by-line in ein TextDokument?

Kann ich einfach im zweiten ViewController auf die TextDatei, in der der Text gespeichert wurde zugreifen oder muss ich dazu noch etwas programmieren?

Ich kann bei Google leider nicht das passende finden und bin auch noch Programmier-Anfänger, deswegen
wäre es nett, wenn ihr mir weiterhelfen könnt ;)
LG,
ApfelFreak
 
Du kannst String ganz einfach aus einer Datei auslesen
Code:
+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:([URL="file:///Users/Sven/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiOS6.1.iOSLibrary.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSError"]NSError[/URL] **)error
bzw. in eine Datei schreiben
Code:
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:([URL="file:///Users/Sven/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiOS6.1.iOSLibrary.docset/Contents/Resources/Documents/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSError"]NSError[/URL] **)error
 
OK, ich habe es jetz (fast) geschafft:

NSString *output = TextView.text;
NSString *path = [@"textfile.txt"stringByStandardizingPath];
NSError *error = [[NSError alloc]init];
[output writeToFile:path atomically:NOencoding:NSUTF8StringEncodingerror:&error];

NSString *content = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:&error];
TextView2.text = content;

Ich weiß nur noch nicht, wie ich es letztendlich Zeile für Zeile ins Textdokument schreibe. Ich habe mal was von "seekToEndOfFile" gehört, kann damit aber nicht so viel anfangen.
LG
 
OK, ich habe es jetz (fast) geschafft:

NSString *output = TextView.text;
NSString *path = [@"textfile.txt"stringByStandardizingPath];
NSError *error = [[NSError alloc]init];
[output writeToFile:path atomically:NOencoding:NSUTF8StringEncodingerror:&error];

NSString *content = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncodingerror:&error];
TextView2.text = content;

Ich weiß nur noch nicht, wie ich es letztendlich Zeile für Zeile ins Textdokument schreibe. Ich habe mal was von "seekToEndOfFile" gehört, kann damit aber nicht so viel anfangen.
LG

Hat zwar jetzt nichts mit deinem Problem zu tun, aber trotzdem der Hinweis: du musst kein NSError-Objekt instantieren. Es genügt hier einen Pointer auf einen Pointer zu übergeben. Tritt ein Fehler auf, wird ein Objekt erstellt. Damit kannst dua uch prüfen, ob dein Aufruf funktioniert hat oder nicht.

Sähe dann so aus:

Code:
[COLOR=#7825ac]NSError[/COLOR][COLOR=#333333] *error = nil[/COLOR][COLOR=#333333];[/COLOR]
[COLOR=#420084][COLOR=#000000][output [/COLOR]writeToFile[COLOR=#000000]:path [/COLOR]atomically[COLOR=#000000]:[/COLOR][COLOR=#cb00a4]NO[/COLOR]encoding[COLOR=#000000]:[/COLOR]NSUTF8StringEncodingerror[COLOR=#000000]:&error];
[/COLOR][/COLOR]
if ( error!=nil ) {
   // ups, ein Fehler ist aufgetreten
   NSLog(error);
}
 
Gut, danke hab ich gleich mal korrigiert ;)
Hast du oder hat jemand anderes denn noch eine Lösung für mein Problem?
Wär echt nett :*
LG
 
Muss die Datei dann eine lesbare Textdatei sein? Wenn nicht, dann geht das einfach darüber, deine Strings in ein NSArray zu stecken und dieses dann zu schreiben.

Sähe dann so aus:
Code:
[COLOR=#2f4f4f]// Array erstellen und füllen[/COLOR]
NSMutableArray* myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"Mein erster String"];
[myArray addObject:@"Mein zweiter String"];

[COLOR=#2f4f4f]// Array in Datei schreiben[/COLOR]
[COLOR=#000000][[/COLOR][COLOR=#000000]myArray writeToFile[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#000000]@"MeineDatei.dat" atomically[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#000000]YES[/COLOR][COLOR=#000000]];
[/COLOR]
[COLOR=#2f4f4f]...[/COLOR]

[COLOR=#2f4f4f]//  Array wieder auslesen[/COLOR]
NSMutableArray* mySecondArray = [[NSMutableArray alloc] initWithCont[COLOR=#000000]entsOfFile[/COLOR][COLOR=#000000]:@"[/COLOR][COLOR=#000000]MeineDatei.dat"[/COLOR][COLOR=#000000]];
[/COLOR]

NSLog(mySecondArray[0]); [COLOR=#2f4f4f]// Ausgabe: "Mein erster String"[/COLOR]
NSLog(mySecondArray[1]); [COLOR=#2f4f4f]// Ausgabe: "Mein zweiter String"[/COLOR]
 
@redcoding: Danke! Jetzt funktioniert es... :))
Ich habe allerdings keine .dat Datei genommen, sondern eine .txt
LG
 
Gerne. Freut mich geholfen zu haben :)

Die Dateiendung bleibt natürlich dir überlassen.