Il contenuto non viene recuperato dal file
-
01-10-2019 - |
Domanda
Ho questo problema cablata, non posso ottenere il contenuto del file e di avviare la mia NSMutableArray con esso.
Ecco il mio codice:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"Does file exist?: %i", [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]]);
NSMutableArray *tempArr;
tempArr = [[NSMutableArray alloc] initWithContentsOfFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]];
Quando si tenta questo, ritorna initWithContentsOfFile (null). Il controllo fila se il file esiste stampe '1' per la console.
Questo è il codice che sto usando per salvare i dati:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[length.text writeToFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory] atomically:NO];
sto usando più o meno esattamente lo stesso codice in un programma diverso senza problemi.
Davvero bisogno di aiuto qui, forse sto solo cieco per il momento ...
Soluzione
La documentazione per il metodo initWithContentsOfFile:
diciamo di NSArray:
Valore di ritorno Un array inizializzato per contenere il contenuto del file specificato da alinea o nulla se il file non può essere aperto o il contenuto del il file non può essere analizzato in un array. L'oggetto restituito potrebbe essere diverso che il ricevitore originale.
non comprendono la dichiarazione di length
nel frammento di codice, ma sto indovinando che length.text
restituisce un oggetto NSString, non un NSArray. Così avresti bisogno di leggere che di ritorno da un file utilizzando initWithContentsOfFile:
da NSString, non NSArray.
Altri suggerimenti
Quando si tenta di creare una matrice dai contenuti di un file, il file deve essere in formato plist , e l'elemento più esterno plist deve essere <array>
. Se non ha quel formato, l'inizializzazione fallirà e l'array sarà nil
.
si sta creando il file scrivendo una NSString
in un file, il che significa che si dovrebbe probabilmente essere la lettura in un NSString
, non un NSArray
.