我在做一个应用程序,将播放声音的事件,但我无法弄清楚如何从应用程序的文件夹ressources访问文件。
下面是我在做什么:
NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];
但它不工作。 如果我把全长路径,它将工作,但我需要另一种方式,因为有人可能把我的应用程序在其他地方比的应用程序文件夹。
我在做一个应用程序,将播放声音的事件,但我无法弄清楚如何从应用程序的文件夹ressources访问文件。
下面是我在做什么:
NSSound *player = [[NSSound alloc] initWithContentsOfFile:@"Sound.mp3"] byReference:NO];
[player play];
但它不工作。 如果我把全长路径,它将工作,但我需要另一种方式,因为有人可能把我的应用程序在其他地方比的应用程序文件夹。
你需要使用NSBundle
与类pathForResource:ofType:
方法来引用该文件:
NSSound *player = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Sound" ofType:@"mp3"] byReference:NO];
[player play];
这将返回传递给方法的资源的完整路径。
只是为了澄清为什么你最初的解决方案没有奏效:
相对路径是相对于当前的工作目录。 对于从Finder推出了GUI的应用程序,在初始工作目录是/ - 也就是说,文件系统的根目录。 如果它是你包的资源文件夹,您的解决方案会工作。
作为Perspx在他的回答指出,正确的解决办法是让你的包的相对路径转换为完整路径。