Array-Problem in NSDefaults

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

  • Array-Problem in NSDefaults

    Hallo,

    eine Frage zum Array hätt ich. Ich habe eine IBAction, die ein Speichern von Werten auslöst. Das Speichern klappt auch (alles schön in einem Array, das Array soll dann in ein übergeordnetes Array als "neuer Datensatz" rein, und das Ganze geht dann in die NSDefaults.

    Soweit, so gut. Mein Problem ist, dass mit dem Code kein "zweiter" Datensatz angelegt wird, sondern immer der bisherige gelöscht und durch den neuen ersetzt wird. Das Ganze ist selbstvertändlich irgendwo ein Denkfehler, aber ich kriegs nach 2 Tagen nicht auf die Reihe und schreie somit um HILFÄ... Code anbei

    -(IBAction)save {

    //NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

    NSUserDefaults *dbdefaults = [NSUserDefaults standardUserDefaults];
    NSString *str ;
    NSString *myString;
    dictionary = [NSMutableDictionary dictionary];


    savedData = [NSMutableDictionary dictionary]; //[currentDefaults objectForKey:@"SavedData"];

    str = @"wx";
    myString = [NSString stringWithFormat: @"%@%d", str, nummer];
    ... und so weiter


    [dictionary setObject:[NSNumber numberWithInt:db_wx] forKey:str];
    [savedData setObject:dictionary forKey:uuid]; //uuid wird bei jedem KLick neu erzeugt - hier ist das Problem, dass er nur EINEN Datensatz abspeichert, und zwar nur den aktuellsten

    [dbdefaults setObject:savedData forKey:@"savedData"];

    [[NSUserDefaults standardUserDefaults] synchronize];
  • Vielleicht noch als Ergänzung: Im plist steht dann

    root
    ----- saved data
    ------------ GUID
    *ende*

    sollter aber:

    root
    ------savedata
    ---------------GUID1
    ---------------GUID2
    etc.

    stehen... denke, da sag ich irgendwo zu früh oder zu spät "Speicher mal" :)

    Danke!
  • Noch ein Nachtrag: Wenn ich savedData direkt in die NSDefaults speicher, dann klappts. Ich hätte aber gerne noch das Array drumherum. Als wäre es in dbdefaults nicht möglich, mehr als 1 Objekt zu haben....


    (wenn das so weitergeht, komm ich selbst drauf :) lol)
  • Wenn Du das Dictionary savedData bei jedem Save mit:

    Quellcode

    1. savedData = [NSMutableDictionary dictionary];

    neu erstellst, wo sollen dann bitte die alten Werte her kommen?

    Du solltest den auskommentierten Teil:

    Quellcode

    1. //[currentDefaults objectForKey:@"SavedData"];

    verwenden, um die "alten" Werte aus den UserDefaults zu übernehmen.

    Also:

    Quellcode

    1. savedData = [dbdefaults objectForKey:@"SavedData"];


    Weiterhin solltest Du für die UserDefaults immer den selben Key (@"SavedData" und @"savedData") verwenden. Die Keys in einem Dictionary und den UserDefaults sind case sensitive!

    Also:

    Quellcode

    1. [dbdefaults setObject:savedData forKey:@"SavedData"];