Datei in Documents dauerhaft gespeichert?

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

  • Datei in Documents dauerhaft gespeichert?

    Hallo, meine Frage besteht aus mehreren Teilen und es wäre super wenn ihr mir weiterhelfen könntet.

    Also ich schreibe grade an eine App. Beim ersten Start soll der Nutz einen Namen und ein Passwort eingeben. Ob es der erste Start ist frage ich mit einer Text-Datei ab. Dort steht das Wort "first" drin. Wenn der Nutzer dann ein Namen und Pw eingegeben hat soll der Text das Datei geändert werden. Wenn ich dann die App wieder Starte ( auf meinem iPhone), kommt trotzdem der Screeen der ersten Nutzung. Daher meine Frage:

    - Werden die Dateien im Documents-Folder wieder gelöscht sobald die App ausgeht? oder habe ich da nen Denkfehler? Ich habe die first.txt in meinem Projekt drin.
    das passiert innerhalb der viewdidload::::

    Quellcode

    1. NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    2. NSString *path = [docsDirectory stringByAppendingPathComponent:@"first.txt"];
    3. NSString *filecontent =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    4. if (filecontent == NULL) {
    5. filePath = [[NSBundle mainBundle] pathForResource:@"first"
    6. ofType:@"txt"];
    7. filecontent =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    8. NSData *dataToWrite = [[NSString stringWithFormat:@"%@",filecontent] dataUsingEncoding:NSUTF8StringEncoding];
    9. docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    10. path = [docsDirectory stringByAppendingPathComponent:@"first.txt"];
    11. [dataToWrite writeToFile:path atomically:YES];
    12. }
    13. filecontent =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    14. //Parse filecontent
    15. lines = [filecontent componentsSeparatedByString:@"\n"];
    16. for(id names in lines) {
    17. NSLog(@"%@", names);
    18. }
    19. //Erstbefüllung;
    20. if ([lines[0] isEqualToString:@"first"]) {
    21. [self.view addSubview:firstStartView];
    22. self.tabBarController.tabBar.userInteractionEnabled = NO;
    23. [firstStartView addSubview:nameTextField];
    24. [firstStartView addSubview:passwordTextField];
    25. [firstStartView addSubview:weiterBtn];
    26. [firstStartView addSubview:headingLabel];
    27. }
    Alles anzeigen


    Hier die Methode welche den Inhalt ändern soll:

    Quellcode

    1. -(void)deleteFirst {
    2. NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    3. NSString *path = [docsDirectory stringByAppendingPathComponent:@"first.txt"];
    4. NSError *error;
    5. NSString *str = @"allreadydone!";
    6. [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    7. //NSString *filecontent =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    8. }
    Alles anzeigen
  • Hallo lbremen,

    ich fand das mit den userdefaults am Anfang auch "unheimlich". Ist aber - wie gritsch gesagt hat - echt der einfachste Weg.

    Und das sind die wichtigsten Bausteine dafür.

    Quellcode

    1. // sag, dass Du userdefaults nutzen willst
    2. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    3. // setze einen Wert für einen Key (Key kannst Du nachher abfragen
    4. [defaults setObject:@"YES" forKey:@"firstStart"];
    5. // speichert die userdefaults ab
    6. [defaults synchronize];
    7. // gibt Dir den Wert aus einem Objekt
    8. [defaults objectForKey:@"firstStart"]
    Alles anzeigen


    Jetzt brauchst Du nur noch ein bissle if-geraffel drum herum bauen und nach dem firstStart den Wert auf "NO" setzen und dann hast Du eigentlich alles, was Du brauchst und irgendwie trotzdem noch das Erfolgserlebnis es selbst geschafft zu haben.

    Gruß
    iet
    ----
    Macht's gut und danke für den Fisch
  • User-Defaults sind sicherlich eine gute Möglichkeit, um kleine Datenmengen zu speichern. Allerdings haben Passwörter und andere Zugangsdaten darin genauso wenig wie in anderen Plain-Text-Dateien überhaupt nichts verloren. Dafür solltest Du den Schlüsselbund verwenden.

    lbremen schrieb:

    Werden die Dateien im Documents-Folder wieder gelöscht sobald die App ausgeht?

    Nein, genau dafür ist der Dokumenten-Ordner ja da. Apple beschreibt auch, wozu die einzelnen Verzeichnisse gut sind, und ob sie beispielsweise iTunes auch sichert,
    „Meine Komplikation hatte eine Komplikation.“