2010-06-02 14 views
12

Mam kilka przykładowy kod z Tuaw, który jest prawdopodobnie 3 wydania starych;) Kompilator wydaje ostrzeżenie, że metoda jest przestarzała, ale nie widzę, że wspomniano w dokumentach SDK. Jeśli jest przestarzałe, musi istnieć alternatywne podejście lub metoda zastępowania. Czy ktoś wie, co zastąpienie jest dla tej metody?Jeśli ciąg NSString zContentsOfFile jest nieaktualny, jaki jest jego zamiennik?

Określony kod był następujący:

NSArray *crayons = [[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"crayons" ofType:@"txt"]] componentsSeparatedByString:@"\n"]; 

Zmodyfikowany kod (skokowo idiotycznymi - i bez obsługi błędów) wynosi:

NSError *error; 
NSString *qs = [[NSBundle mainBundle] pathForResource: @"crayons" ofType: @"txt"]; 
NSString *ps = [[NSString alloc] stringWithContentsOfFile:qs encoding:NSUTF8StringEncoding error: &error]; 
NSArray *crayons = [[NSArray alloc] arrayWithContentsOfFile: ps];    

Odpowiedz

18

bardziej zdolne sposób zastąpić stary. Użyj:

+ (id)stringWithContentsOfFile:(NSString *)path 
        usedEncoding:(NSStringEncoding *)enc 
         error:(NSError **)error 

Ciesz się! Sprawdź numer documentation, aby uzyskać więcej informacji.

+0

Pamiętaj, aby obsłużyć błąd, jeśli BOOL zwróci NIE, aby odnieść sukces. Wiele przykładowego kodu tego nie pokazuje. – uchuugaka

18

Oto przykład, dodając do Carl Norum's correct answer.

Uwaga: ampersand & został dodany do zmiennej o błędzie.

// The source text file is named "Example.txt". Written with UTF-8 encoding. 
NSString* path = [[NSBundle mainBundle] pathForResource:@"Example" 
               ofType:@"txt"]; 
NSError* error = nil; 
NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:&error]; 
if(error) { // If error object was instantiated, handle it. 
    NSLog(@"ERROR while loading from file: %@", error); 
    // … 
} 

Bit rada ... Zawsze podjąć próbę poznania kodowanie znaków pliku. Zgadywanie jest ryzykownym biznesem.

Powiązane problemy