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?
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é.
Voici le code que j'utilise dans mon framework.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
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.
Je l'utilise
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
Dans Swift v3, j'ai utilisé l'extrait suivant
var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)