70 votes

fileExistsAtPath : retour NO pour les fichiers existants

À un moment dans mon code fileExistsAtPath : renvoie NON pour les fichiers dont j'ai confirmé l'existence. Je me suis gratté la tête à ce sujet et je ne peux pas comprendre pourquoi cela ne fonctionne pas, alors je l'ai changé en ce code car ce répertoire existe absolument mais s'il n'est pas créé de toute façon.

 NSError* err = nil;
NSURL *dir = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
                                                       inDomain:NSUserDomainMask
                                              appropriateForURL:nil   
                                                         create: YES
                                                          error:&err];
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:[dir absoluteString]];

Après avoir exécuté ce code, le dossier du répertoire de l'application existe et l'erreur est 0, mais existe est NON.

Comment se peut-il?

AIT

142voto

bneely Points 4860

Vous devez utiliser [dir path] , et non [dir absoluteString] .

6voto

Anton Tropashko Points 2235

Je me suis cogné la tête contre le mur pendant quelques heures. Apparemment, à chaque exécution dans xcode (sur simulateur), le chemin du répertoire de l'application changeait. La partie UUID de celui-ci. Donc, au lieu de stocker le chemin complet, j'ai fini par conserver le suffixe de chemin et en préfixant cela avec la classe de stockage implicite : temporaire, mis en cache ou documents :-[ Vous réalisez pourquoi vous devez parfois exécuter sur l'appareil même si vous n'explorez pas les profondeurs du Metal, du GLES ou du multitouch ? ;^)

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