这让我发疯,因为我无法弄清楚世界上究竟发生了什么。我一直在从主包中加载文件,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”]字符串,也会返回null。
我的globaly.js文件位于我的Resources文件夹中,我的其他文件位置的确切位置使用上述方法完全正常。
为什么找不到我的js文件?
答案 0 :(得分:14)
默认情况下,Xcode可能会将带有“js”扩展名的文件视为源文件,并将它们添加到Compile Sources构建阶段而不是其Copy Bundle Resources构建阶段。
只需将您的“js”文件移动到Copy Bundle Resources构建阶段,它们就会被复制到您的应用程序包中。他们是否在项目层次结构中名为Resources的组中是无关紧要的;这只是一个组织工具,在Xcode中没有任何意义。这是实际完成产品组合工作的目标下的构建阶段。
答案 1 :(得分:5)
据我所知,Xcode不喜欢带* .js扩展名的文件。我的意思是它没有将它添加到应用程序包中。只需将您的文件重命名为* .txt,一切都会好的。
正确答案是:您需要将您的js文件从Compile Sources目标构建阶段移动到Copy Bundle Resources。因为Xcode认为js文件是源文件而应该编译它们然后作为资源添加。
答案 2 :(得分:2)
并不是Xcode不喜欢.js文件。它确实考虑了其他我们在webview中没有使用javascriptexecution的.js文件。
只是我们需要在目标下的Copy Bundle资源构建阶段添加.js文件。只需将.js文件拖到复制包资源构建阶段即可。因此,Xcode将考虑此文件,因为它现在处于bulid阶段捆绑中。 我想如果我们不执行上述步骤,我们会收到有关构建代码的警告。我并不完全记得警告,但它只是说Xcode无法识别.js文件。
将文件添加到构建阶段后,即可使用 NSData * jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@“global”ofType:@“js”]];
答案 3 :(得分:1)
我遇到了同样的问题。
我执行了以下步骤来解决此问题:
在构建设置中将js文件定位到“编译源代码”部分,然后从中删除它。
找到“复制捆绑资源”部分并在那里添加js文件。
以上两个步骤解决了我的问题..
答案 4 :(得分:0)
有时xCode没有意识到文件在您的项目中,并且没有正确地捆绑所有内容。尝试删除.js文件并重新添加。
另外,您似乎提到了两个不同的文件名,activity.js和global.js