“Aucun fichier ou répertoire” Erreur lors de la création du répertoire
Je cherche à enregistrer des vignettes de l'utilisateur de générer des photos dans un sous-répertoire dans le répertoire documents, mais je suis incapable de créer le sous-répertoire dans la première place. Lorsque je tente de créer le sous-répertoire dans le répertoire documents, j'obtiens cette erreur (Aucun fichier ou répertoire):
Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)"
UserInfo=0x17ef9c90 {NSFilePath=/var/mobile/Applications/FD0CC480-97FE-4E50-931F-5341DB6AD92B/Documents/com.Jonathan.App-Name/707F0431-7A09-4D33-B122-13C48AD4CA53,
NSUnderlyingError=0x17e51520 "The operation couldn’t be completed. No such file or directory"}
Je suis tellement confus. Je sais que le répertoire n'existe pas, parce que je suis en train de le créer! La seule chose que je peux penser, c'est que le répertoire documents est incorrect, mais c'est directement à partir de l'Apple Docs.
Suis-je tort d'essayer de créer le sous-répertoire?
- (NSURL *)documentsDirectory
{
NSFileManager *sharedFM = [NSFileManager defaultManager];
NSArray *possibleURLs = [sharedFM URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask];
NSURL *appSupportDir = nil;
NSURL *appDirectory = nil;
if ([possibleURLs count] >= 1)
{
//Use the first directory (if multiple are returned)
appSupportDir = [possibleURLs objectAtIndex:0];
}
//If a valid app support directory exists, add the
//app's bundle ID to it to specify the final directory.
if (appSupportDir)
{
NSString *appBundleID = [[NSBundle mainBundle] bundleIdentifier];
appDirectory = [appSupportDir URLByAppendingPathComponent:appBundleID];
}
return appDirectory;
}
- (NSURL *)thumbnailDirectoryWithName:(NSString *)theName
{
NSURL *directory = [[self documentsDirectory] URLByAppendingPathComponent:theName];
NSURL *thumbnailsDirectory = [directory URLByAppendingPathComponent:@"Thumbnails"];
NSError *error;
if ([[NSFileManager defaultManager] fileExistsAtPath:[thumbnailsDirectory path]] == NO)
{
[[NSFileManager defaultManager] createDirectoryAtURL:thumbnailsDirectory withIntermediateDirectories:NO attributes:nil error:&error];
if (error)
{
NSLog(@"[Thumbnail Directory] %@", [error description]);
return nil;
}
}
return thumbnailsDirectory;
}
J'ai aussi essayé de createDirectoryAtPath:
et stringByAppendingPathComponent:
avec en vain.
La NSURL *directory
dans thumbnailDirectoryWithName:
retourne:
/var/mobile/Applications/FD0CC480-97FE-4E50-931F-5341DB6AD92B/Documents/com.Jonathan.App-Name/707F0431-7A09-4D33-B122-13C48AD4CA53
Le dernier composant du chemin d'accès au fichier, 707F0431-7A09-4D33-B122-13C48AD4CA53, est l'identifiant unique d'une Entité dans la Base de Données, ce qui me permet d'attribuer un nom unique à un répertoire.
Toute aide est grandement appréciée!
OriginalL'auteur Jonathan | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
Ici est la façon d'obtenir le répertoire documents:
Ensuite, pour construire le chemin d'accès à votre fichier:
OriginalL'auteur danh
J'ai accepté @danh réponse, mais j'ai trouvé la raison de l'obtention de cette erreur. C'était une simple erreur, et une autre raison pour laquelle je ne devrais pas le code quand je suis fatigué, haha. Je ne peux pas trouver une raison pour laquelle Apple nous propose d'inclure le bundle de l'application identificateur de nom de sous-répertoire, mais pour corriger cette erreur, tout ce que j'avais à faire était de définir
withIntermediateDirectories:YES
.withIntermediateDirectories:
En gros, j'ai essayé de créer un sous-répertoire dans un répertoire qui n'existe pas.
Pas de problème. Je suis content que cela a aidé quelqu'un d'autre.
OriginalL'auteur Jonathan