我正在尝试在我的项目中加载一些.applescript文件。
将它们复制到“支持文件”目录中,如下所示:
并尝试访问它们:
NSBundle *bundle = [NSBundle mainBundle];
NSLog(@"Resource path for test.applescript: %@", [bundle pathForResource:@"test" ofType:@"applescript"]);
pathForResource始终返回null。
两个文件都在xcode中正确导入。目标会员资格是我的应用程序。 来自类似问题的解决方案并没有真正帮助
我做错了什么?
答案 0 :(得分:148)
在Xcode目标“Build Phases”中添加“Copy Bundle Resources”下的文件。
答案 1 :(得分:5)
对于所有仍然获得nil路径并且文件被添加到" Copy Bundle Resources"只需从Copy Bundle Resources中删除该文件,然后重新添加。
答案 2 :(得分:1)
Zaph上面给出了很好的回应,但是当我这样做时,我注意到它的速度更快,至少在Xcode 6.1中是这样。
如果您单击该文件(例如test.applescript)并打开Xcode的右侧菜单,您将看到一个名为“Target Membership”的部分。确保选择了正确的目标(如您正在使用脚本的目标),并且它将执行与在“复制捆绑资源”下添加文件相同的工作
此外,并非完全相关,但如果您从几个不同的地方加载,或者您继承此类。你不应该真的使用
[NSBundle mainBundle];
改为使用
[NSBundle bundleForClass:[self class]];
这意味着您不必担心方法调用的位置,它将从与您正在运行的目标关联的相应项中获取资源。非常适合制作库和可重复使用的电话;)
答案 3 :(得分:0)
您的图片是否假定某个文件夹中的该文件?
在这种情况下尝试pathForResource:ofType:inDirectory:
方法:
NSLog(@"Resource path for test.applescript: %@", [bundle pathForResource:@"test" ofType:@"applescript" inDirectory:@"folder/Supporting Files");
答案 4 :(得分:0)
除了Zaph所说的,请确保您没有参与'发布'模式。
曾经有一段时间我忘记更改设置,并且符号被剥离,从而使NSBundle无法解析路径。