Не удается найти файл .js в моем mainBundle?

Это сводит меня с ума, поскольку я не могу понять, что происходит в мире. Я загружаю файлы из основного пакета все время, файлы 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" ] string возвращает значение null.

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

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

Ответ 1

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

И правильным ответом будет: Ваша потребность переместить ваши js файлы из фазы сборки сборных источников для копирования ресурсов Bundle. Поскольку Xcode считает, что js файлы являются исходными файлами, их следует скомпилировать, а затем добавить в качестве ресурсов.

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

У меня была та же проблема.

Для решения этой проблемы я выполнил следующие шаги:

  • Найдите файл js в разделе "Скомпилировать исходный код" в настройках сборки и удалите его оттуда.

  • Найдите раздел "Ресурс копирования Bundle" и добавьте туда файл js.

Вышеуказанные 2 шага решили мою проблему.

Ответ 5

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

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