16 votes

Comment puis-je charger un fichier plist depuis le disque en tant que NSDictionary sur iOS ?

Je veux charger le fichier plist depuis le disque (documents, cache de l'application, ...) et non depuis un bundle de ressources.

41voto

Lachlan Roche Points 16456

Vous pouvez charger un plist à partir de n'importe quel chemin de fichier accessible avec -initWithContentsOfFile: ou +dictionaryWithContentsOfFile:

Chargez un plist à partir d'un fichier et créez le fichier s'il n'existait pas:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                    NSUserDomainMask, YES); 
self.plistFile = [[paths objectAtIndex:0]
                    stringByAppendingPathComponent:@"example.plist"];

self.plist = [[NSMutableDictionary alloc] initWithContentsOfFile:plistFile];
if (!plist) {
    self.plist = [NSMutableDictionary new];
    [plist writeToFile:plistFile atomically:YES];
}

28voto

Smikey Points 959

Un peu plus propre:

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

2voto

pegpeg Points 19

Il est toujours bon d'avoir une version Swift. Il charge un fichier plist depuis le bundle.

if let plistPath = Bundle.main.path(forResource: "plistName", ofType: "plist") {
    let dict = NSDictionary(contentsOfFile: plistPath)
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X