• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

John

Macoun
Registriert
08.06.09
Beiträge
119
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
 

IceCake97

Gloster
Registriert
03.05.12
Beiträge
63
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
 

redcoding

Alkmene
Registriert
17.03.13
Beiträge
32
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);
}
 

IceCake97

Gloster
Registriert
03.05.12
Beiträge
63
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
 

redcoding

Alkmene
Registriert
17.03.13
Beiträge
32
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]
 

IceCake97

Gloster
Registriert
03.05.12
Beiträge
63
@redcoding: Danke! Jetzt funktioniert es... :))
Ich habe allerdings keine .dat Datei genommen, sondern eine .txt
LG
 

redcoding

Alkmene
Registriert
17.03.13
Beiträge
32
Gerne. Freut mich geholfen zu haben :)

Die Dateiendung bleibt natürlich dir überlassen.