2009-06-22 15 views
6

Mam plik słów/wyrażeń oddzielonych znakami nowej linii. Muszę pobrać plik i przeczytać każde słowo/frazę w tablicy. Mam to do tej pory:Odczytaj plik do tablicy

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

Ale nie jestem pewien, czy to prawda, a jeśli tak, to gdzie dalej.

Również odpowiedź teabot z dnia

NSString componentsSeparatedByCharactersInSet: NSCharacterSet newlineCharacterSet

działa świetnie, ale to tylko 10,5. Jak to zachowanie byłoby replikowane dla wersji 10.4?

Odpowiedz

11

Oto podejście, które powinno działać - Wyjadę z rzeczywistą przykład kodu jako wdrożenie powinno być dość proste biorąc pod uwagę następujące elementy:

Construct NSString z pliku z:

NSString stringWithContentsOfFile:encoding:error 

podzielić ciąg na tablicę NSStrings stosując następujący:

NSString componentsSeparatedByCharactersInSet: 
NSCharacterSet newlineCharacterSet 

należy skończyć z NSArray z NSStrings wag z każdym ciągiem zawierającym jedną z linii w twoim pliku.

+1

Nie zapomnij odfiltrować pustych ciągów spowodowanych pustych wierszy, w tym jeden, który UNIX edytorów (takie jak vi) zostanie pozostawione na końcu pliku. –

+1

To działa świetnie, ale te dwa ostatnie to tylko 10,5 - co by je zastąpiło, jeśli chcę mieć kompatybilność z wersją 10.4? – Walker

+0

Dobre połączenie: 10.4.x - Radziłbym zmienić pytanie, aby to odzwierciedlić. – teabot

11

Tylko dla kompletności (i dlatego, że jestem znudzony) Oto pełna przykład bassed na teabot poście:

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

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

stringWithContentsOfFile: pathForResource: ofType przestarzałe "Użyj stringWithContentsOfFile: encoding: error: or stringWithContentsOfFile: usedEncoding: error: zamiast." –

Powiązane problemy