Не можете найти файл .js в моем mainBundle? - PullRequest
10 голосов
/ 27 декабря 2010

Это сводит меня с ума, потому что я не могу понять, что происходит в мире.Я загружаю файлы из вашего основного пакета все время, XML-файлы, HTML-файлы и т. Д. Но теперь я пытаюсь получить содержимое файла Javascript, но он никогда не может его найти.Я использую:

NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]];
    if (jsData) {
        NSLog(@"%@", jsData);
    } else {
        NSLog(@"Can't find file");
        return;
    }

Даже при проверке строки [[NSBundle mainBundle] pathForResource: @ "global" ofType: @ "js"] возвращается ноль.

Мой файл globaly.jsв моей папке «Ресурсы» - точное местоположение, где мои другие файлы - это места, которые работают совершенно нормально, используя описанный выше метод.

Почему он не может найти мой файл js?

Ответы [ 5 ]

14 голосов
/ 28 декабря 2010

По умолчанию XCode может обрабатывать файлы с расширением "js" как исходные файлы и добавлять их в фазу компиляции "Источники компиляции", а не в фазу компоновки ресурсов "Копировать комплект".

Просто переместите "js"файлы на этапе сборки Copy Bundle Resources, и они будут скопированы в комплект вашего приложения.Находятся ли они в группе под названием «Ресурсы» в иерархии проекта, не имеет значения;это просто организационный инструмент, он не имеет смысла в XCode.Это этапы сборки в соответствии с целями, которые фактически выполняют работу по созданию продукта.

5 голосов
/ 27 декабря 2010

Насколько я помню, Xcode не любит файлы с расширением * .js.Я имею в виду, что он не добавил его в комплект приложений.Просто переименуйте ваш файл в * .txt, и все будет в порядке.

И правильный ответ будет таким: вам нужно переместить ваши js-файлы с целевой фазы сборки Compile Sources на Copy Bundle Resources.Потому что Xcode считает, что js-файлы являются исходными файлами, и вместо этого они должны быть скомпилированы, а затем добавлены как ресурсы.

2 голосов
/ 28 декабря 2010

Дело не в том, что Xcode не любит файлы .js. Он учитывает их, иначе мы не использовали бы файлы .js для javascriptexecution в веб-просмотре.

Просто нам нужно добавить файл .js на этапе сборки ресурса Copy Bundle под цели. Просто перетащите файл .js на этап сборки ресурса комплекта копирования. Таким образом Xcode рассмотрит этот файл, так как он сейчас находится в фазе bulid. Я думаю, что если мы не сделаем вышеуказанный шаг, мы получим предупреждение о создании кода. Я точно не помню предупреждение, но просто сказано, что Xcode не может распознать файл .js.

Как только файл добавлен в фазу сборки, вы можете использовать NSData * jsData = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @ "global" ofType: @ "js"]];

1 голос
/ 18 ноября 2012

Я столкнулся с той же проблемой.

Я выполнил следующие шаги, чтобы решить эту проблему:

  1. Найдите файл js в разделе "источник компиляции" в сборке.настройки и удалите его оттуда.

  2. Найдите раздел «copy Bundle Resource» и добавьте туда файл js.

Вышеупомянутые 2 шага решенымоя проблема ..

0 голосов
/ 27 декабря 2010

иногда xCode не понимает, что файл находится в вашем проекте, и неправильно все связывает. попробуйте удалить файл .js и добавить его снова.

также кажется, что вы упоминаете 2 разных имени файла, activity.js и global.js

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