Speichern Sie zusätzliche Informationen zu einem plist jedes Mal, wenn ich laufen die App? (Iphone)

StackOverflow https://stackoverflow.com/questions/1201620

Frage

Mein iphone app schreibt Schlüssel-Wert-Paare in einem Wörterbuch in einer plist-Datei. Ich rette im Grunde die Punktzahl des Benutzers, wenn sie das Spiel spielen. Das ist alles schön und gut, aber jedes Mal, wenn ich die App laufen und neue Noten erhalten, erhalten die neuen Werte über die alten Werte gespeichert. Wie füge ich Informationen an den plist, wenn der Benutzer die App greift stattdessen die Datei neu zu schreiben? Ich möchte alle die Noten halten, nicht nur die jüngsten.

code:

-(void)recordValues:(id)sender {

    //read "propertyList.plist" from application bundle
    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSString *finalPath = [path
                          stringByAppendingPathComponent:@"propertyList.plist"];
    dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];

    //create an NSNumber object containing the
    //float value userScore and add it as 'score' to the dictionary.
    NSNumber *number=[NSNumber numberWithFloat:userScore];
    [dictionary setObject:number forKey:@"score"];

    //dump the contents of the dictionary to the console 
    for (id key in dictionary) {
        NSLog(@"memory: key=%@, value=%@", key, [dictionary
                                                 objectForKey:key]);
    }

    //write xml representation of dictionary to a file
    [dictionary writeToFile:@"/Users/rthomas/Sites/propertyList.plist" atomically:NO];
}
War es hilfreich?

Lösung

Sie sind das Objekt zu einer Reihe für Schlüssel-Score Einstellung

    NSNumber *number=[NSNumber numberWithFloat:userScore];   
 [dictionary setObject:number forKey:@"score"];

Statt dessen, was Sie tun möchten, ist ein Array oder etwas Derartiges so

NSNumber *number=[NSNumber numberWithFloat:userScore];  
    NSMutableArray *array=[dictionary objectForKey:@"score"]
     [array addObject:number]
    [dictionary setObject:array forKey:@"score"]

Dies sollte das tun, was Sie fragen,

Andere Tipps

Sie wollen zuerst die alten Werte laden, in einem NSArray oder NSDictionary wie Daniel sagte.

Das Sie den neuen Wert der Sammlung. (Vielleicht etwas Sortier- oder etwas tun, auch)

Dann schreiben Sie die neue Kollektion zurück auf die Festplatte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top