Pregunta

Mi aplicación de iphone escribe pares clave-valor en un diccionario en un archivo plist. Básicamente estoy guardando la puntuación del usuario cuando juegan el juego. Todo esto está bien y excelente, pero cada vez que ejecuto la aplicación y obtengo nuevas puntuaciones, los nuevos valores se guardan sobre los valores anteriores. ¿Cómo agrego información a la lista cada vez que el usuario accede a la aplicación en lugar de reescribir el archivo? Quiero conservar todas las puntuaciones, no solo la más reciente.

código:

-(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];
}
¿Fue útil?

Solución

Está configurando el objeto en un número para la puntuación clave

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

En lugar de esto, lo que quieres hacer es tener una matriz o algo por el estilo, así

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

esto debería hacer lo que estás pidiendo

Otros consejos

Desea cargar los valores antiguos primero, en un NSArray o NSDictionary como dijo Daniel.

Luego agrega el nuevo valor a la colección. (tal vez hacer algo de clasificación o algo también)

Luego vuelve a escribir la nueva colección en el disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top