2011-08-29 13 views
10

Parece que no puedo obtener nsdata para escribir en un archivo. Alguna idea de lo que puedo estar haciendo mal. Gracias por adelantado.NSData writeToFile no funciona

NSString* filename = @"myfile.txt"; 

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:filename];  

if ([fileManager fileExistsAtPath:applicationDocumentsDir]) 
    NSLog(@"applicationDocumentsDir exists"); // verifies directory exist 

NSData *data = [NSData dataWithContentsOfURL:URL]; 

if (data) {  
    NSString *content = [[NSString alloc] initWithBytes:[data bytes] 
                 length:[data length] encoding: NSUTF8StringEncoding]; 

    NSLog(@"%@", content); // verifies data was downloaded correctly 

    NSError* error; 
    [data writeToFile:storePath options:NSDataWritingAtomic error:&error]; 

    if(error != nil) 
     NSLog(@"write error %@", error); 
} 

que seguir recibiendo el error

"The operation couldn’t be completed. No such file or directory" 
+6

No se debe comprobar si 'error' es nulo o no - que podría ser inicializado a cualquier cosa (en tu caso). Verifique el resultado de 'writeToFile: options: error' para determinar el éxito o el fracaso. Si devuelve falso (NO), solo entonces debe leer el error. –

+0

Gracias por la respuesta. Devuelve NO. Quité el cheque para hacer que la publicación sea lo más breve posible. – user346443

+0

¿Cuál es el valor de su variable storePath antes de llamar a writeToFile: opciones: error:? Tu código se ve bien, pero el error que recibes me hace cuestionar hacia dónde apunta esa ruta. – Sam

Respuesta

5

Trate

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"myfile.txt"]; 

Y

if ([[NSFileManager defaultManager] fileExistsAtPath:storePath]) 
     NSLog(@"applicationDocumentsDir exists"); 
+1

Eso funcionó, raro. ¿Qué sería una cadena diferente de una variable nsstring? – user346443

+0

Si lo imprime y tiene un archivo: al principio, es una URL. Me acabo de enterar de esto, a pesar de que me quedo con las funciones de cadena. –

+0

fileExistsAtPath devuelve falso. ¿Qué hacer? Debido a que no existe, el archivo no se ha creado aún. Cómo crearlo? – NikeAlive