2010-02-02 13 views

risposta

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

Non passare 'nil' per l'argomento' error: '. Per prima cosa, è il tipo sbagliato ('nil' è concettualmente un 'id', mentre l'argomento' error: 'è un' NSError **', che è fondamentalmente un 'id * '); la costante del tipo corretto è 'NULL'. Ancora più importante, quando questa affermazione fallisce, non vuoi sapere perché? –

+1

Progresso, ma non dovresti neanche dare per scontato che 'error' è' nil' quando il messaggio ha successo. Verificare se il messaggio ha restituito "SÌ" o "NO" e esaminare solo l'oggetto errore quando restituisce "NO". Citation: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html#//apple_ref/doc/uid/TP40001806-CH204-SW1 (prima "importante" barra laterale- devo ammettere che è un po 'obliquo) –

+0

Grazie per i vostri commenti – Vladimir

0

si potrebbe usare NSUserDefaults

risparmio:

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

lettura:

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

Amico, di file .txt – RexOnRoids

+0

D'accordo si potrebbe, e questa è una valida alternativa. Non è quello che sta chiedendo, ma se non sai quanto sia facile usare i prefs, non sapresti usarli. +1 –

+1

Non dimenticare di chiamare '[prefs synchronize]' dopo aver salvato qualcosa su NSUserDefaults! –

3

Qualcosa di simile a questo:

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

Ecco come salvare NSString nella cartella Documenti. Salvare anche altri tipi di dati può essere realizzato in questo modo.

- (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

Stavo usando questo metodo per salvare alcuni dati di immagine codificati Base64 sul disco. Quando ho aperto il file di testo sul mio computer ho continuato a riscontrare problemi nella lettura dei dati a causa di alcune interruzioni di riga e di ritorni aggiunti automaticamente.

le seguenti correzioni di codice questo numero:

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

// write string to disk 
Problemi correlati