2009-07-29 4 views
0

Mon application iPhone écrit des paires clé-valeur dans un dictionnaire dans un fichier plist. Je sauve essentiellement le score de l'utilisateur quand il joue au jeu. Tout va bien et dandy, mais chaque fois que je lance l'application et que j'obtiens de nouveaux scores, les nouvelles valeurs sont sauvegardées sur les anciennes valeurs. Comment ajouter des informations au plist chaque fois que l'utilisateur accède à l'application au lieu de réécrire le fichier? Je veux garder tous les scores, pas seulement les plus récents.Enregistrer des informations supplémentaires à un plist à chaque fois que je lance l'application? (iphone)

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]; 
} 

Répondre

1

Vous définissez l'objet d'un certain nombre de points clés

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

Au lieu de cela ce que vous voulez faire est d'avoir un tableau ou quelque chose du genre si

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

cela devrait faire ce que vous demandez

+0

Ah. Voilà donc ce qu'est un tableau. Merci beaucoup! – Evelyn

+0

J'ai encore des problèmes. Êtes-vous en train de dire que je dois créer une série de dictionnaires? – Evelyn

+0

Non, la clé est un tableau de nombres, au lieu d'un nombre, un tableau est une liste d'objets ... donc vous pouvez y mettre n'importe quel nombre comme ud ... Vous voulez le rendre mutable tableau de sorte que vous pouvez ajouter et supprimer de celui-ci. – Daniel

1

Vous voulez d'abord charger les anciennes valeurs, dans un NSArray ou un NSDictionary comme dit Daniel.

Vous ajoutez la nouvelle valeur à la collection. (peut-être faire un tri ou quelque chose aussi)

Ensuite, vous écrivez la nouvelle collection sur le disque.

+0

Cela aide aussi. :) – Evelyn

Questions connexes