当我在模拟器上测试我的应用程序时,一切都很好。但当我在iOS设备上测试时,我得到了这个错误:
*** Terminating app due to uncaught exception 'FileNotFound', reason: 'file '/Users/name/Documents/appname/GFX/MainMenu.png' not found'
我检查了Build Phases Copy Bundle Resources,并添加了所有内容。当我在Xcode
中突出显示该文件时,在实用程序中选中了Target Membership。
我也尝试省略加载文件的代码,但我在另一个文件上得到相同的错误。似乎只有应用程序图标和启动图像加载正常。
请注意,我正在使用麻雀框架(如果这有任何区别)。纹理是这样加载的:
SPTexture *gameMenuTexture = [SPTexture textureWithContentsOfFile:(@"/Users/name/Documents/appname/GFX/MainMenu.png")];
SPImage *gameMenuImage = [SPImage imageWithTexture:(gameMenuTexture)];
[self addChild:gameMenuImage];
帮助将非常感激。我在论坛上寻找答案。谢谢!
问题在于硬编码路径:
@"/Users/name/Documents/appname/GFX/MainMenu.png"
在设备中,指定的路径中没有任何文件夹。
如果它在bundle中使用:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MainMenu" ofType:@"png"];
SPTexture *gameMenuTexture = [SPTexture textureWithContentsOfFile:filePath];
测试如下SPTexture *gameMenuTexture = [SPTexture textureWithContentsOfFile:(@"MainMenu.png")];
你的模拟器只是一个在Mac上运行的应用程序。它可以很容易地访问我们Mac上的文件,如/Users/name/Documents/appname/GFX/MainMenu.png。
你的iOS设备不能直接访问Mac上的文件。最近,当你发布你的应用程序时,第三方用户几乎不能访问你Mac上的任何东西。
仔细想想。这是有道理的。