web-dev-qa-db-fra.com

Quel est le meilleur moyen de trouver le répertoire Documents de l'utilisateur sur un iPhone?

Je lis le livre de cuisine du développeur iPhone d'Erica Sadun et j'ai rencontré une question.

Elle dit dans le livre que la manière de trouver le répertoire Documents de l'utilisateur est avec le code:

[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

mais cela semble légèrement fragile et diffère de la façon habituelle de le faire sur Mac, qui serait:

NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);

Y a-t-il des raisons particulières pour utiliser l'un sur l'autre?

59
bwinton

Objc:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

Rapide:

var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

Vous voudrez le premier élément du tableau retourné.

91
Ben Gottlieb

Voici le code que j'utilise dans mon framework.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
49
Lee

Vous devriez envisager d'utiliser les méthodes NSFileManager qui renvoient des URL, qui constituent le format préféré.

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL

Cette méthode est destinée à localiser les répertoires connus et communs du système. 

Un tableau d'objets NSURL identifiant les répertoires demandés. Les répertoires sont classés en fonction de l'ordre des constantes de masque de domaine, les éléments du domaine utilisateur en premier et les éléments du domaine système en dernier.

14
Zelko

Je l'utilise

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
0
Nguyễn Văn Chung

Dans Swift v3, j'ai utilisé l'extrait suivant 

var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
0
Suresh Velusamy