2009-11-30 12 views
11

Estoy tratando de crear un archivo de texto con el contenido de una cadena en mi escritorio. No estoy seguro de si estoy haciendo las cosas bien, no tengo errores pero no funciona bien ...Objective-C crear un archivo de texto con una cadena

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); 
NSString *desktopDirectory=[paths objectAtIndex:0]; 
NSString *filename = [desktopDirectory stringByAppendingString: @"file.txt"]; 
[myString writeToFile:filename atomically:YES encoding: NSUTF8StringEncoding error: NULL]; 

Respuesta

13

usted no sabe si usted está recibiendo ningún error porque Ignora el valor YES/NO devuelto del método -writeToFile: ... y no le da ningún puntero de error para registrar cualquier falla posible. Si el método devuelve NO, deberías verificar (y manejar o presentar) el error para ver qué salió mal.

Supongo que la falla se debe a la ruta que construyó. Pruebe -stringByAppendingPathComponent: en lugar de -stringByAppendingString: ... este y sus métodos relacionados manejan correctamente las rutas.

El archivo probablemente está siendo creado en realidad (es decir, es posible que no obtenga ningún error después de todo). Supongo que el archivo se creó en algún lugar como "~/Desktopfile.txt" desde el uso de -stringByAppendingString: no considera la cadena como una ruta separada por barras. Verifique su carpeta de inicio - Apuesto a que el archivo está allí.

39
//Method writes a string to a text file 
-(void) writeToTextFile{ 
    //get the documents directory: 
    NSArray *paths = NSSearchPathForDirectoriesInDomains 
     (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    //make a file name to write the data to using the documents directory: 
    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
                documentsDirectory]; 
    //create content - four lines of text 
    NSString *content = @"One\nTwo\nThree\nFour\nFive"; 
    //save content to the documents directory 
    [content writeToFile:fileName 
        atomically:NO 
          encoding:NSStringEncodingConversionAllowLossy 
            error:nil]; 

} 
+0

Hombre perfecto ... Gracias. –

+0

Esto funciona perfectamente – MayorMonty

+0

Gracias, amigo! Simple y fácil de usar. – Felipe

-3

el problema es que la cadena del directorio de escritorio termina en nada (no /). Mira esto (en un iPhone) usando UIAlertview.

+1

¿Qué? 1.) No necesita usar '/' si lo hace de la manera en que lo hizo. 2.) ¿Dónde ves un UIAlertView? Yo no. 3.) esta pregunta fue hecha hace casi 2 años. –

+0

.. ¿Por qué también verificamos algo que ver con un "Escritorio" en iOS? iOS no tiene tal cosa. –

Cuestiones relacionadas