Voici une petite fonction utile qui rend l'utilisation/création de dossiers iOS un peu plus facile.
Vous lui passez le nom d'un sous-dossier, il vous renverra le chemin complet et s'assurera que le répertoire existe.
(Personnellement, je place cette fonction statique dans ma classe AppDelete, mais peut-être n'est-ce pas l'endroit le plus judicieux pour la mettre.)
Voici comment vous l'appelleriez pour obtenir le "chemin complet" d'un sous-répertoire MySavedImages :
NSString* fullPath = [AppDelegate getFullPath:@"MySavedImages"];
Et voici la fonction complète :
+(NSString*)getFullPath:(NSString*)folderName
{
// Vérifie si un sous-répertoire existe dans notre répertoire Documents sandboxé.
// Renvoie le chemin complet du répertoire.
//
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if (paths.count < 1)
return nil;
NSString *rootFolder = [paths firstObject];
NSString* fullFolderPath = [rootFolder stringByAppendingPathComponent:folderName];
BOOL isDirectory;
NSFileManager* manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:fullFolderPath isDirectory:&isDirectory] || !isDirectory) {
NSError *error = nil;
NSDictionary *attr = [NSDictionary dictionaryWithObject:NSFileProtectionComplete
forKey:NSFileProtectionKey];
[manager createDirectoryAtPath:fullFolderPath
withIntermediateDirectories:YES
attributes:attr
error:&error];
if (error) {
NSLog(@"Erreur lors de la création du chemin du répertoire : %@", [error localizedDescription]);
return nil;
}
}
return fullFolderPath;
}
En utilisant cette petite fonction, il est facile de créer un répertoire dans le répertoire Documents de votre application (s'il n'existe pas déjà) et d'y écrire un fichier.
Voici comment je créerais le répertoire et écrirais le contenu d'un de mes fichiers image :
// Créons un sous-répertoire "MySavedImages" (s'il n'existe pas déjà)
NSString* fullPath = [AppDelegate getFullPath:@"MySavedImages"];
// Par exemple, chargeons les données d'un de mes fichiers image
NSString* imageFilename = @"icnCross.png";
UIImage* image = [UIImage imageNamed:imageFilename];
NSData *imageData = UIImagePNGRepresentation(image);
// Obtenons le chemin complet + nom de fichier où nous pouvons écrire ce .png, dans notre nouveau répertoire MySavedImages
NSString* imageFilePathname = [fullPath stringByAppendingPathComponent:imageFilename];
// Écrivons les données
[imageData writeToFile:imageFilePathname atomically:YES];
J'espère que cela vous aidera !
0 votes
Si je me souviens bien, le NSDocumentDirectory se trouve dans le même chemin que les données de base de l'application, et chaque application a son propre répertoire de documents. Et oui, vous pouvez librement mettre toutes les ressources dont vous avez besoin pour votre application ici. Au fait, il semble que votre question ne soit pas encore terminée?
0 votes
Je viens de poster quelque chose que je pense être lié à votre question ici stackoverflow.com/questions/5105250/… vérifiez si cela fonctionne pour vous.
0 votes
Pour toute personne provenant de Google, notez que cela a changé dans iOS 8. Voir ma réponse ci-dessous.
0 votes
C'est le même emplacement où votre fichier sqlite est enregistré.