Если NSString stringWithContentsOfFile устарела, какова его замена? - PullRequest
12 голосов
/ 02 июня 2010

У меня есть некоторый пример кода от Tuaw, который, вероятно, имеет 3 версии;) Компилятор выдает предупреждение о том, что метод устарел, но я не вижу того, что упомянуто в документации SDK. Если это устарело, должен быть альтернативный подход или метод замены. Кто-нибудь знает, какая замена для этого метода?

Конкретный код был:

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

Модифицированный код (в дискретных идиотских шагах - без обработки ошибок):

* +1007 *

Ответы [ 2 ]

18 голосов
/ 21 февраля 2013

Вот пример, добавляющий к правильный ответ Карла Норума .

Обратите внимание на амперсанд &, добавленный к переданной переменной error .

// 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);
    // …
}

Небольшой совет ... Всегда старайтесь узнать кодировку символов вашего файла. Гадать - рискованное дело.

18 голосов
/ 02 июня 2010

Более способный метод заменил старый. Использование:

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

Наслаждайтесь! Проверьте документацию для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...