проблема pathForResource inDirectory - PullRequest
       11

проблема pathForResource inDirectory

1 голос
/ 24 февраля 2010

Я хочу загрузить HTML-файл из ресурсов в WebView.

в ресурсах у меня есть:

test.html

testfolder-> test.html

этот код отлично работает:

[[webview1 mainFrame] loadRequest:
 [NSURLRequest requestWithURL:
  [NSURL fileURLWithPath:
   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"]]]];

и этот - сбой приложения (SIGABRT):

[[webview1 mainFrame] loadRequest:
 [NSURLRequest requestWithURL:
  [NSURL fileURLWithPath:
   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"  inDirectory:@"testfolder" ]]]];

Как я могу получить файлы из папок?

Ответы [ 5 ]

8 голосов
/ 24 февраля 2010

Вы делаете это правильно, так что это означает, что либо у вас есть опечатка в имени вашего файла / каталога, либо каталог "testfolder" не включается в комплект вашего приложения.

Убедитесь, что папка testfolder находится в разделе ресурсов вашего проекта XCode как папка (а не группа).

Посмотрите на окно «Результаты сборки» при создании приложения; там вы должны увидеть шаги, в которых написано «copy test.html» и «copy testfolder».

Обратите внимание, что (при сборке для симулятора) вы также можете напрямую просмотреть содержимое пакета приложений - посмотрите в Библиотеке / Поддержка приложений / iPhone Simulator / Пользователь / Приложения

1 голос
/ 19 января 2015

Создание «группы» в XCode не создает реального каталога в вашем приложении.

Вам необходимо импортировать каталог в ваше приложение, используя следующий метод в вашем проекте «Тест»:

  1. Файл -> Выберите «Добавить файлы в тест»
  2. Выберите каталог, который вы хотите импортировать
  3. Во всплывающем окне убедитесь, что вы выбрали «Копировать элементы в папку целевой группы» и «Создать ссылки на папки для любых добавленных папок»

Хит "Добавить"

Готово!

Справочник должен отображаться синим вместо желтого.

1 голос
/ 24 февраля 2010

Документация для NSURL fileURLWithPath: говорит

Параметры

path

Путь, который будет представлять объект NSURL.путь должен быть допустимым системным путем.Если путь начинается с тильды, он должен быть сначала расширен с помощью stringByExpandingTildeInPath.

Передача nil для этого параметра создает исключение.

и для NSBundle pathForResource:ofType: inDirectory:

Возвращаемое значение

Полный путь к файлу ресурса или nil, если файл не найден.

Может быть, файл находится не в указанном вами пути к каталогу?

0 голосов
/ 26 июня 2012
  1. Если вы хотите загрузить из каталога, сначала нужно добавить каталог в проект со ссылками на создание каталога (чтобы в Copy Bundle Resources вы получили синий значок с именем главной папки и не отдельные файлы !)

  2. Не использовать параметр in directory вообще. Просто используйте глобальный путь с косой чертой ("/") вместо обратной косой черты ("\"), как в Windows.

0 голосов
/ 24 февраля 2010

Ваш код выглядит правильно.
Вы уверены, что ваша папка testfolder включена в вашу сборку?

Если нет, ваш вызов pathForResource: ofType: inDirectory: вернет nil. И согласно документации класса NSURL , передача nil для параметра метода fileURLWithPath: class приводит к исключению.

Чтобы убедиться, что ваша папка включена в процесс сборки, разверните фазу сборки «Копировать ресурсы комплекта» и найдите свою папку. Если его там нет, перетащите его в него.

Чтобы убедиться, что вы добавили его правильно, перейдите к встроенному приложению, щелкните его правой кнопкой мыши и выберите пункт «Показать содержимое пакета».

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