transferir sesion iniciar importar fotos descargar iphone objective-c ios xcode afnetworking

iphone - sesion - ¿Lista de archivos guardados en el directorio de documentos iOS en un UITableView?



importar fotos de iphone a pc (8)

Aquí está el método que utilizo para obtener el contenido de un directorio.

-(NSArray *)listFileAtPath:(NSString *)path { //-----> LIST ALL FILES <-----// NSLog(@"LISTING ALL FILES FOUND"); int count; NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL]; for (count = 0; count < (int)[directoryContent count]; count++) { NSLog(@"File %d: %@", (count + 1), [directoryContent objectAtIndex:count]); } return directoryContent; }

He configurado el siguiente código para guardar un archivo en el directorio de documentos:

NSLog(@"Saving File..."); NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.reddexuk.com/logo.png"]]; AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"logo.png"]; operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Successfully downloaded file to %@", path); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; [operation start];

Sin embargo, deseo agregar cada archivo a un UITableView cuando se guarda con éxito. Cuando se toca el archivo en el UITableView, me gustaría que un UIWebView navegue a ese archivo (todo fuera de línea).

Además, ¿cómo puedo obtener el nombre de archivo y la terminación, como "logo.png" en lugar de http://www.reddexuk.com/logo.png ?

¿Cómo puedo hacer esto?


Gracias alex

Aquí está la versión Swift

func listFilesOnDevice() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentDirectory = paths[0] as! String let manager = NSFileManager.defaultManager() if let allItems = manager.contentsOfDirectoryAtPath(documentDirectory, error: nil) { println(allItems) } }


Para obtener los contenidos de un directorio.

- (NSArray *)ls { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: documentsDirectory]; NSLog(@"%@", documentsDirectory); return directoryContent; }

Para obtener el último componente de la ruta,

[[path pathComponents] lastObject]


Para un nombre de archivo más razonable:

NSString *filename = [[url lastPathComponent] stringByAppendingPathExtension:[url pathExtension]];


Sé que esta es una pregunta antigua, pero es buena y las cosas han cambiado en iOS después de Sandboxing.

La ruta a todas las carpetas legibles / de escritura dentro de la aplicación ahora tendrá un hash y Apple se reserva el derecho de cambiar esa ruta en cualquier momento. Cambiará en cada lanzamiento de la aplicación con seguridad.

Necesitará obtener la ruta a la carpeta que desea y no puede codificarla como lo hacíamos en el pasado.

Solicita el directorio de documentos y, en la matriz de retorno, se encuentra en la posición 0. Luego, a partir de ahí, utiliza ese valor para suministrar al NSFileManager para obtener los contenidos del directorio.

El siguiente código funciona bajo iOS 7 y 8 para devolver una matriz de los contenidos dentro del directorio de documentos. Es posible que desee ordenarlo de acuerdo con sus propias preferencias.

+ (NSArray *)dumpDocumentsDirectoryContents { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSError *error; NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error]; NSLog(@"%@", directoryContents); return directoryContents; }


Swift 3.x

let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] if let allItems = try? FileManager.default.contentsOfDirectory(atPath: documentDirectory) { print(allItems) }


-(NSArray *)findFiles:(NSString *)extension{ NSMutableArray *matches = [[NSMutableArray alloc]init]; NSFileManager *fManager = [NSFileManager defaultManager]; NSString *item; NSArray *contents = [fManager contentsOfDirectoryAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] error:nil]; // >>> this section here adds all files with the chosen extension to an array for (item in contents){ if ([[item pathExtension] isEqualToString:extension]) { [matches addObject:item]; } } return matches; }

El ejemplo anterior es bastante autoexplicativo. Espero que te responda la segunda pregunta.


NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:dir_path]; NSString *filename; while ((filename = [dirEnum nextObject])) { // Do something amazing }

para enumerar a través de TODOS los archivos en el directorio