2009-06-22 16 views
6

Ho un file di parole/frasi separate da newline. Ho bisogno di prendere il file e leggere ogni parola/frase nell'array. Ho questo finora:Leggi file nell'array

NSFileHandle *wordsFile = [NSFileHandle fileHandleForReadingAtPath:[[NSBundle  mainBundle] pathForResource:@"WordList" 
                              ofType:nil]]; 
    NSData *words = [wordsFile readDataToEndOfFile]; 
    [wordsFile closeFile]; 
    [wordsFile release]; 

Ma io non sono sicuro se questo è vero, e se sì, dove poter passare da lì.

Inoltre, la risposta di teabot di

NSString componentsSeparatedByCharactersInSet: NSCharacterSet newlineCharacterSet

grandi opere, ma è solo 10,5. Come si replicherebbe questo comportamento per 10.4?

risposta

11

Ecco un approccio che dovrebbe funzionare - Lascio fuori un esempio di codice attuale e l'attuazione dovrebbe essere abbastanza semplice dato seguente:

Costruire un NSString dal file con:

NSString stringWithContentsOfFile:encoding:error 

dividere la stringa in un array di NSStrings usando la seguente:

NSString componentsSeparatedByCharactersInSet: 
NSCharacterSet newlineCharacterSet 

Si dovrebbe finire con una NSArray di NSStrings w con ogni stringa contenente una delle righe nel file.

+1

Non dimenticate di filtrare le stringhe vuote causate da righe vuote, tra cui quello che i redattori di UNIX (come vi) partirà alla fine del file. –

+1

Funziona alla grande, ma gli ultimi due sono solo 10.5- cosa li sostituiresti se voglio la compatibilità su 10.4? – Walker

+0

Good call re: 10.4.x - Ti consiglierei di rivedere la domanda per riflettere questo. – teabot

11

Solo per completezza (e perché mi annoio) Ecco un esempio completo bassed sul post di teabot:

NSString *string = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] 
                  pathForResource:@"file" ofType:@"txt"]]; 

    NSArray *array = [string componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
    NSLog(@"%@",array); 
+1

stringWithContentsOfFile: pathForResource: ofType deprecato "use stringWithContentsOfFile: encoding: error: or stringWithContentsOfFile: usedEncoding: error: invece." –