2011-05-26 2 views
3

Je voudrais lire les données d'une plist, ajouter quelques éléments et écrire les données dans un plist (mettre à jour une plist).Ecrire les données sur plist

Je veux avoir le plist tenir un tableau de dictionnaires, lire ce tableau dans mon application, ajouter des dictionnaires, puis réécrire le tableau à la plist.

Comment cela est-il fait? Je ne sais pas non plus où et comment créer le plist sur le premier lancement des applications. ou devrait-il être placé dans le paquet depuis le début?

Une autre chose dont je ne suis pas sûr est si les dictionnaires plist peuvent tenir par ex. CLLocations en tant que valeurs pour les clés? Sera-t-il sauvegardé correctement ou le CLLocation devra-t-il être divisé en valeurs lat et lon?

Merci

Répondre

6

La meilleure façon de créer un dictionnaire d'un plist est d'utiliser la méthode dictionaryWithContentsOfFile:, par exemple, pour charger un plist de vos ressources:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 

L'écriture d'un plist est tout aussi simple :

[dict writeToFile:filePath atomically:YES]; 

(Notez que vous ne pouvez pas écrire dans les ressources de votre application, vous devrez créer un chemin différent, par exemple, dans vos documents directs ORY, voir NSSearchPathForDirectoriesInDomains)

Plists ne peuvent contenir que des instances de NSDictionary, NSArray, NSNumber et NSString, de sorte que vous ne pouvez pas mettre un CLLocation dans un Plist sans conversion. Si vous devez enregistrer des objets non-Plist, jetez un oeil à NSKeyedArchiver. Il peut créer des fichiers et NSData objets de tout ce qui adopte le protocole NSCoding (CLLocation fait).

+0

Qu'en est-il du tableau de dictionnaires? Serait-ce le même que ci-dessus, sauf avec l'aide de tableau? Et ce sera bien parce que le tableau contient des NSDictionaries? – jarryd

+1

Les tableaux de dictionnaires sont bien, tout comme les tableaux de tableaux, les dictionnaires de nombres ... vous obtenez le point. – omz

+0

@omz J'ai essayé cette méthode de lecture, mais pour une raison quelconque, lorsque j'essaie d'écrire sur un périphérique réel, les anciennes données sont renvoyées. Des idées? – MikeIsrael