2012-03-19 11 views
5

Mam plik zawierający kilka tysięcy słów na poszczególnych liniach. Muszę załadować wszystkie te słowa do oddzielnych elementów wewnątrz tablicy, więc pierwszym słowem będzie Array [0], drugim będzie Array [1] itd.iOS Odczytuj linie pliku w tablicy

Znalazłem przykładowy kod w innym miejscu, ale Xcode 4.3 mówi, że używa on amortyzacji połączenia.

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

NSEnumerator *nse = [lines objectEnumerator]; 

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

Odpowiedz

18

Tak, + (id)stringWithContentsOfFile:(NSString *)path jest przestarzała.

Patrz dokumentacja Apple dla NSString

Zamiast używać + (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

stosować w następujący sposób:

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

Aktualizacja: - Dzięki JohnK

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

Dla ogólności należy użyć 'componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]', tzn .: 'NSString * Treść = [NSString stringWithContentsOfFile: @ "testFileReadLines.txt" kodowania: NSUTF8StringEncoding błędzie: nil]; NSArray * lines = [zawartość componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]]; '. – JohnK

1

Sprawdź this. Być może będziesz musiał użyć zaktualizowanej metody.

+3

Dzięki za pomoc. Dała Aadhirie poprawną odpowiedź, ponieważ była nieco bardziej kompletna. – jskrwyk

Powiązane problemy