objective-c cydia

objective c - ¿Cómo hacer un directorio de iOS?



objective-c cydia (5)

Aquí está el método que hice para crear directorios.

-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath { NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName]; NSError *error; if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory withIntermediateDirectories:NO attributes:nil error:&error]) { NSLog(@"Create directory error: %@", error); } }

Bueno,

Así que tengo una aplicación de Cydia que necesito actualizar. Soy consciente de que con las aplicaciones Cydia no tienen una carpeta de Documentos, por lo que tiene que crear una. Y así es como lo hice antes en iOS 4 (que no funciona en iOS 5):

mkdir("/var/mobile/Library/APPNAME", 0755); mkdir("/var/mobile/Library/APPNAME/Documents", 0755); NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db"; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile]; if (fileExists == TRUE) { NSLog(@"already exists"); } else { NSLog(@"doesn''t exists"); NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease]; NSError *error; NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db"; NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"]; [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error]; }

También incluí un código que copia el archivo de la base de datos en esa carpeta, también. Eso no funciona (incluso cuando creo la carpeta manualmente a través de SSH).

¡Por favor ayuda! Gracias.



En Swift, devuelve true si existe o se crea.

func ensureDirectoryExists(path:String) -> Bool { if !NSFileManager.defaultManager().fileExistsAtPath(path) { do { try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil) } catch { print(error) return false } } return true }


Intente utilizar createDirectoryAtURL:withIntermediateDirectories:attributes:error:

Referencia de clase de NSFileManager :

createDirectoryAtURL:withIntermediateDirectories:attributes:error:

Crea un directorio con atributos dados en la ruta especificada.

Parámetros

url : una URL de archivo que especifica el directorio a crear. Si desea especificar una ruta relativa, debe configurar el directorio de trabajo actual antes de crear el objeto NSURL correspondiente. Este parámetro no debe ser nulo.

createIntermediates : si es YES , este método crea cualquier directorio principal que no existe como parte de la creación del directorio en url. Si es NO , este método falla si alguno de los directorios principales intermedios no existe. Este método también falla si alguno de los elementos de la ruta intermedia corresponde a un archivo y no a un directorio.

attributes - Los atributos de archivo para el nuevo directorio y cualquier directorio intermedio creado recientemente. Puede establecer los números de propietario y grupo, los permisos de archivo y la fecha de modificación. Si especifica cero para este parámetro u omite un valor particular, se usan uno o más valores predeterminados como se describe en la discusión. Para obtener una lista de las claves que puede incluir en este diccionario, consulte la sección “Constantes” (página 54) que enumera las constantes globales utilizadas como claves en el diccionario de atributos. Algunas de las claves, como NSFileHFSCreatorCode y NSFileHFSTypeCode, no se aplican a los directorios.

error : en la entrada, un puntero a un objeto de error. Si se produce un error, este puntero se establece en un objeto de error real que contiene la información del error. Puede especificar nil para este parámetro si no desea la información de error.

Valor de retorno
YES si el directorio se creó o ya existe o NO si se produjo un error.