Datei einlesen und im Array abspeichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datei einlesen und im Array abspeichern

    Ich möchte eine Datei (meinedatei.txt) einlesen und dann jede Zeile in einem Array speichern. Diesen Code habe ich schon probiert, aber wenn ich den 1 Eintrag aus dem Array abrufen will, kommt die Fehlermeldung, dass es keinen ersten Eintrag gibt. Anscheinend trennt er die Datei nicht korrekt auf. :cursing:


    NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"2002_113"] ofType:@"txt"]; // Pfad der Datei
    NSString *dataYearString = [NSString stringWithContentsOfFile:filePath encoding:NSASCIIStringEncoding error:&error]; // Liest die Daten aus der Datei aus und speichert sie in die Variable dataYearString
    dataYear = [dataYearString componentsSeparatedByString:@"\n"]; // Teilt den String in ein Array, in dem in jedem Eintrag eine Zeile der Daten steht
    NSLog(@"%@",dataYear[1]);

    Doch der NSLog funktioniert nicht, da ja kein erster Eintrag vorhanden ist. Nur der 0., in dem die gesamte Datei liegt.
    Im Anhang ist die auszulesende Datei.

    Vielen Dank jetzt schon mal.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von New_Xcoder ()

  • Mac & i Test Abo
  • Sollte eigentlich funktionieren, keine Ahnung warum das nicht klappt - könnte mit UTF16 zusammenhängen. Ich würde mal [dataYearString componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]] probieren (und leere Zeilen ignorieren - \r\n). Allgemein finde ich es eleganter, Die Codierung der Zeilenumbrüche nicht hart reinzuschreiben.
    Multigrad - 360°-Produktfotografie für den Mac
  • mattik schrieb:

    Sollte eigentlich funktionieren, keine Ahnung warum das nicht klappt - könnte mit UTF16 zusammenhängen. Ich würde mal [dataYearString componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]] probieren (und leere Zeilen ignorieren - \r\n). Allgemein finde ich es eleganter, Die Codierung der Zeilenumbrüche nicht hart reinzuschreiben.



    Nene, das funktioniert nicht, hab ich grad getestet.

    Es funktioniert aber, wenn man der Text-Datei mal die richtige Codierung verpasst ;) z.B. UTF-8, dann funktioniert es wunderbar. Da war ja irgendne seltsame UTF-16-Codierung eingestellt.

    Quellcode

    1. NSString * filePath = [[NSBundle mainBundle] pathForResource:@"2002_113" ofType:@"txt"];
    2. NSError * error = nil;
    3. NSString * content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    4. if (error)
    5. {
    6. NSLog(@"error %@, %@", error, [error userInfo]);
    7. }
    8. [self setFileArray:[content componentsSeparatedByCharactersInSet:
    9. [NSCharacterSet newlineCharacterSet]]];
    10. NSLog(@"%@", ([self fileArray])[1]);
    Alles anzeigen


    Klick auf die Text-Datei, rechts im Inspektor die Codierung umstellen.

    Edit: Trollig, jetzt funktionierts auch so ..

    Quellcode

    1. NSString * filePath = [[NSBundle mainBundle] pathForResource:@"2002_113" ofType:@"txt"];
    2. NSError * error = nil;
    3. NSString * content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF16StringEncoding error:&error];
    4. if (error)
    5. {
    6. NSLog(@"error %@, %@", error, [error userInfo]);
    7. }
    8. [self setFileArray:[content componentsSeparatedByCharactersInSet:
    9. [NSCharacterSet newlineCharacterSet]]];
    10. NSLog(@"%@", ([self fileArray])[1]);
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von matz ()