Solo quiero crear nuevas carpetas en la carpeta de documentos de mi aplicación de iPhone.Crear una carpeta dentro de la carpeta de documentos en las aplicaciones de iOS
¿Alguien sabe cómo hacer eso?
¡Apreciar tu ayuda!
Solo quiero crear nuevas carpetas en la carpeta de documentos de mi aplicación de iPhone.Crear una carpeta dentro de la carpeta de documentos en las aplicaciones de iOS
¿Alguien sabe cómo hacer eso?
¡Apreciar tu ayuda!
lo hago de la siguiente manera:
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
no me gusta "[caminos objectAtIndex: 0]" porque si Apple añade una nueva carpeta que comienza con "A", "B" oder "C ", la carpeta" Documentos "no es la primera carpeta en el directorio.
Mejor:
NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Ver la respuesta de Tim. El uso de NSSearchPathForDirectoryiesInDomains es la forma estándar de recuperar el directorio de documentos de un usuario. –
Si Apple decide cambiar el nombre del directorio de documentos a "MyDocuments" (o similar), su enfoque tampoco funcionará. – Mehlyfication
no tengo la reputación suficiente para comentar sobre la respuesta de Manni, pero [caminos objectAtIndex: 0] es la forma habitual de obtener los documentos de la aplicación Directorio
Porque la función 0SSNSSearchPathForDirectoriesInDomains se diseñó originalmente para Mac OS X, donde podría haber más que uno de estos directorios, , devuelve una matriz de rutas más bien que una sola ruta. En iOS, la matriz resultante debe contener la ruta única al directorio. El listado 3-1 muestra un uso típico de esta función .
Listado 3-1 Obtención de la ruta al directorio Documentos de la aplicación
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Creo que la forma más sencilla de recuperar la ruta del directorio de documentos es: 'NSString * path = [@" ~/Documents "stringByExpandingTildeInPath];' –
Esto funciona muy bien para mí,
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *appSupportDir = [fm URLsForDirectory:NSDocumentsDirectory inDomains:NSUserDomainMask];
NSURL* dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:@"YourFolderName"];
NSError* theError = nil; //error setting
if (![fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES
attributes:nil error:&theError])
{
NSLog(@"not created");
}
Debe ser NSDocumentDirectory en lugar de NSDocumentsDirectory –
siguiente código puede ayudar en la creación de directorio:
-(void) createDirectory : (NSString *) dirName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory
dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:dirName];
NSError *error;
if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) {
NSLog(@"Couldn't create directory error: %@", error);
}
else {
NSLog(@"directory created!");
}
NSLog(@"dataPath : %@ ",dataPath); // Path of folder created
}
Uso:
[self createDirectory:@"MyFolder"];
Resultado:
directorio creado!
camino de datos:/var/mobile/Applications/BD4B5566-1F11-4723-B54C-F1D0B23CBC/Documentos/MiCarpeta
Swift 1.2 y iOS 8
Crear directorio personalizado (name = "MyCustomData") dentro del directorio de documentos, pero solo si el directorio no existe.
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
// create the custom folder path
let myCustomDataDirectoryPath = documentDirectoryPath.stringByAppendingPathComponent("/MyCustomData")
// check if directory does not exist
if NSFileManager.defaultManager().fileExistsAtPath(myCustomDataDirectoryPath) == false {
// create the directory
var createDirectoryError: NSError? = nil
NSFileManager.defaultManager().createDirectoryAtPath(myCustomDataDirectoryPath, withIntermediateDirectories: false, attributes: nil, error: &createDirectoryError)
// handle the error, you may call an exception
if createDirectoryError != nil {
println("Handle directory creation error...")
}
}
El Swift 2 solución:
let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
if !NSFileManager.defaultManager().fileExistsAtPath(documentDirectoryPath) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(documentDirectoryPath, withIntermediateDirectories: false, attributes: nil)
} catch let createDirectoryError as NSError {
print("Error with creating directory at path: \(createDirectoryError.localizedDescription)")
}
}
Swift 3 Solución:
private func createImagesFolder() {
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
if let documentDirectoryPath = documentDirectoryPath {
// create the custom folder path
let imagesDirectoryPath = documentDirectoryPath.appending("/images")
let fileManager = FileManager.default
if !fileManager.fileExists(atPath: imagesDirectoryPath) {
do {
try fileManager.createDirectory(atPath: imagesDirectoryPath,
withIntermediateDirectories: false,
attributes: nil)
} catch {
print("Error creating images folder in documents dir: \(error)")
}
}
}
}
Swift 3,0
var error: Error?
var paths: [Any] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
var documentsDirectory: String = paths[0] as? String ?? ""
// Get documents folder
var dataPath: String = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("/MyFolder").absoluteString
if !FileManager.default.fileExists(atPath: dataPath) {
try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil)
}
º anks para la respuesta, funciona pero crea la carpeta "MyFolder" junto a la carpeta de documentos de la aplicación ... no dentro de ella. no sé por qué en realidad –
Lo sentimos, fue un error tipográfico allí - debe agregar @ "/ MyFolder", no @ "MyFolder" a una ruta de documentos. – Vladimir
sí, descubrí eso, gracias por su ayuda :) –