2012-03-19 7 views
5

Ho un file contenente un paio di migliaia di parole su singole righe. Ho bisogno di caricare tutte queste parole in elementi separati all'interno di un array così la prima parola sarà Array [0], la seconda sarà Array [1] ecc.iOS Leggi le righe del file nell'array

Ho trovato qualche codice di esempio altrove ma Xcode 4.3 dice che sta usando il deprezzato chiamate.

NSString *tmp; 
NSArray *lines; 
lines = [[NSString stringWithContentsOfFile:@"testFileReadLines.txt"] 
        componentsSeparatedByString:@"\n"]; 

NSEnumerator *nse = [lines objectEnumerator]; 

while(tmp = [nse nextObject]) { 
    NSLog(@"%@", tmp); 
} 

risposta

18

Sì, + (id)stringWithContentsOfFile:(NSString *)path è stato dichiarato obsoleto.

vedere la documentazione di Apple per NSString

usare al posto + (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

Usa come segue:

lines = [[NSString stringWithContentsOfFile:@"testFileReadLines.txt" 
            encoding:NSUTF8StringEncoding 
             error:nil] 
      componentsSeparatedByString:@"\n"]; 

Aggiornamento: - Grazie alla Jöhnk

NSCharacterSet *newlineCharSet = [NSCharacterSet newlineCharacterSet]; 
NSString* fileContents = [NSString stringWithContentsOfFile:@"testFileReadLines.txt" 
                encoding:NSUTF8StringEncoding 
                 error:nil]; 
NSArray *lines = [fileContents componentsSeparatedByCharactersInSet:newlineCharSet]; 
+1

Per generalità dovresti usare 'componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]', vale a dire: 'NSString * contents = [NSString stringWithContentsOfFile: @" testFileReadLines.txt "codifica: NSUTF8StringEncoding error: nil]; NSArray * lines = [contents componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]]; '. – JohnK

1

Controllare this. Potrebbe essere necessario utilizzare un metodo aggiornato.

+3

Grazie per l'aiuto. Ha dato Aadhira la risposta corretta per era leggermente più completa. – jskrwyk