Цель C: чтение текстовых файлов - PullRequest
63 голосов
/ 18 февраля 2011

Я делал это раньше, но сейчас у меня это не работает. Я делаю:

NSString* path = [[NSBundle mainBundle] pathForResource:@"test" 
                                                 ofType:@"txt"];
NSString* content = [NSString stringWithContentsOfFile:path
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];
NSLog(@"%@",path);

и он возвращает (null) каждый раз, когда я NSLog путь и содержимое. Кто-нибудь может увидеть, что я делаю не так?

1 Ответ

49 голосов
/ 18 февраля 2011

содержимое будет равно нулю (что записывается как '(null)'), если вы передадите ему путь, который он не сможет открыть. Таким образом, ваша единственная проблема в том, что соответствующий экземпляр NSBundle не может найти test.txt в ресурсной части вашего пакета приложений.

Вы должны:

  1. проверьте, что файл находится в вашем проекте XCode; и, если это так,
  2. проверьте, что он включен в фазу «Копировать ресурсы комплекта» под выбранной вами целью (в виде дерева проекта слева в обычном макете окна XCode) и, если это так,
  3. посмотрите в сгенерированном комплекте приложений (найдите ваш продукт, щелкните правой кнопкой мыши, выберите «Показать в Finder», в Finder щелкните правой кнопкой мыши на приложении и выберите «Показать содержимое пакета», а затем найдите там свой файл), чтобы убедиться, что что это там.

Если он скопирован, но соответствующий экземпляр NSBundle не может его найти, значит, происходит что-то очень странное.

...