61 votes

Obtenir par programme le chemin d'accès au dossier Application Support

J'essaie d'obtenir un NSString pour le dossier Application Support de l'utilisateur.

Je sais que je peux faire NSString *path = @"~/Library/Application Support"; mais cela ne semble pas très élégant. J'ai joué avec l'utilisation de NSSearchPathForDirectoriesInDomains mais cela semble être assez long et crée plusieurs objets inutiles (du moins, mon implémentation le fait).

Y a-t-il un moyen simple de le faire ?

76voto

Zaph Points 40557

Ceci est obsolète, pour les meilleures pratiques actuelles, utilisez FileManager.default.urls(for:in:) comme dans le commentaire de @andyvn22 ci-dessous.

la meilleure pratique consiste à utiliser NSSearchPathForDirectoriesInDomains avec NSApplicationSupportDirectory aussi "longue durée" que cela puisse être.

Exemple:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *applicationSupportDirectory = [paths firstObject];
NSLog(@"applicationSupportDirectory: '%@'", applicationSupportDirectory);

Sortie NSLog :

 applicationSupportDirectory: '/Volumes/User/me/Library/Application Support'

38voto

Juan Boero Points 3753

Rapide:

 print(NSHomeDirectory())

ou

 print(FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first)

et

 let yourString = String(FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first)

26voto

Andreas Ley Points 4830

Rapide 3 :

 FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first

2voto

Jeff Pearce Points 121

Cela fonctionne pour moi:

 NSError *error;
NSURL* appSupportDir = [[NSFileManager defaultManager]     
         URLForDirectory:NSApplicationSupportDirectory
                inDomain:NSUserDomainMask
       appropriateForURL:nil
                  create:YES
                   error:&error];

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