NSBundle mainBundle pathForResource (возможно, не та же проблема) - PullRequest
6 голосов
/ 03 августа 2011

Проблема: [NSBundle mainBundle] pathForResource возвращает null (0x0)

Я прочитал много сообщений на эту тему, вот что я нашел:

  1. Makeуверен, что файл, к которому вы пытаетесь получить путь, находится в проекте.Чтобы проверить, посмотрите в списке файлов проекта файл, если его там нет, перетащите его.

  2. Убедитесь, что файл, который вы пытаетесь загрузить, копируется вприложение.Чтобы сделать это, нажмите на проект под файлами проекта (синяя полоса с именем проекта в нем-> Нажмите на цель-> Нажмите на этапах сборки-> Нажмите, чтобы развернуть «Копировать ресурсы комплекта», и убедитесь, что ваш файл находится в немЕсли это не так, нажмите «плюс» и добавьте его.

  3. Убедитесь, что регистр точно совпадает (иначе: симулятор будет работать / приложение не будет проблем) Убедитесь, чторегистр точно совпадает, в противном случае он ничего не вернет. Чтобы это исправить, просто переименуйте его в проекте или используйте правильный регистр в источнике.

  4. В проекте может отсутствовать среда мультимедиа.Чтобы исправить это, нажмите на меню вашего проекта -> нажмите на цель -> нажмите, чтобы развернуть «Связать двоичные файлы с библиотеками». Теперь выберите MediaPlayer.framework и создайте код.

  5. Если всееще не удается, очистите проект и попробуйте еще раз.

Все это проверено / исправлено, но не работает. У меня это работало нормально, а затем я изменил видео, которое я показываюв приложении. Так как я изменил еиль перестал работать.

NSString *path = [[NSBundle mainBundle] pathForResource:@"multiplying" ofType:@"m4v"];

В: почему он нулевой?Файл соответствует регистру / набран правильно и составляет около 10 мегабайт.(файл слишком большой?) Отлично работает в симуляторе, и я могу получить путь к изображению, строка выше этого, без ошибок.

1 Ответ

4 голосов
/ 04 августа 2011

Вы говорите, что он работает в симуляторе и не работает на устройстве? Может быть, вы должны попытаться скопировать файл при первом запуске в одну из папок песочницы приложения и получить к нему доступ следующим образом:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pathForTheFile= [documentsDirectory stringByAppendingPathComponent:     @"multiplying.m4v"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...