2010-02-02 11 views

Respuesta

41
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory 

NSError *error; 
BOOL succeed = [myString writeToFile:[documentsDirectory stringByAppendingPathComponent:@"myfile.txt"] 
     atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
if (!succeed){ 
    // Handle error here 
} 
+4

No pase 'nil' por el argumento' error: '. Por un lado, es el tipo incorrecto ('nil' es conceptualmente un' id', mientras que el argumento 'error:' es un 'NSError **', que es básicamente un 'id *'); la constante del tipo correcto es 'NULL'. Más importante aún, cuando esta declaración falla, ¿no quieres saber por qué? –

+1

Progreso, pero tampoco debe asumir que 'error' es' nil' cuando el mensaje tiene éxito. Pruebe si el mensaje devolvió 'SÍ' o' NO', y solo examine el objeto de error cuando devuelva 'NO'. Cita: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html#//apple_ref/doc/uid/TP40001806-CH204-SW1 (primera barra lateral "importante") es cierto que es un poco oblicuo al respecto) –

+0

Gracias por tus comentarios – Vladimir

0

podría utilizar NSUserDefaults

Ahorro:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"]; 

lectura:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 
+3

Amigo, archivos .txt – RexOnRoids

+0

convenidas se pudiera, y esto es una alternativa válida. No es lo que está pidiendo, pero si no sabes cuán fácil es usar las preferencias, no sabrías usarlas. +1 –

+1

¡No olvide llamar a '[prefs synchronize]' después de guardar algo en NSUserDefaults! –

3

Algo como esto:

NSString *homeDirectory; 
homeDirectory = NSHomeDirectory(); // Get app's home directory - you could check for a folder here too. 
BOOL isWriteable = [[NSFileManager defaultManager] isWritableFileAtPath: homeDirectory]; //Check file path is writealbe 
// You can now add a file name to your path and the create the initial empty file 

[[NSFileManager defaultManager] createFileAtPath:newFilePath contents:nil attributes:nil]; 

// Then as a you have an NSString you could simple use the writeFile: method 
NSString *yourStringOfData; 
[yourStringOfData writeToFile: newFilePath atomically: YES]; 
1

Él es cómo guardar NSString en la carpeta Documentos. Guardar otros tipos de datos también se puede realizar de esa manera.

- (void)saveStringToDocuments:(NSString *)stringToSave { 

NSString *documentsFolder = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
NSString *fileName = [NSString stringWithString:@"savedString.txt"]; 

NSString *path = [documentsFolder stringByAppendingPathComponent:fileName]; 

[[NSFileManager defaultManager] createFileAtPath:path contents:[stringToSave dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 
} 
0

Estaba utilizando este método para guardar algunos datos de imagen codificados en base64 en el disco. Al abrir el archivo de texto en mi computadora, tuve problemas para leer los datos porque algunos saltos de línea y retornos se agregaron automáticamente.

los siguientes arreglos de código de este problema:

myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 

// write string to disk 
Cuestiones relacionadas