Objective C - 获取支持文件子文件夹中的文件路径

Objective C - Get file path in subfolder of supporting files

我正在尝试播放位于几个子文件夹中的 mp3:

NSString *fName = @"subfolder1/subfolder2/mp3name";
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:fName ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];
myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
[myAudioPlayer play];

mp3如果不在子文件夹中会播放,但在子文件夹中不会像上面那样播放。如何从子文件夹中获取要播放的 mp3?

您需要使用不同的方法来指定路径:

- (NSString *)pathForResource:(NSString *)name
                       ofType:(NSString *)extension
                  inDirectory:(NSString *)subpath

当您将资源文件作为整个文件夹添加到您的项目时,Xcode 会询问您是否要:

  1. 创建群组
  2. 创建文件夹引用

在第一种情况下,添加的文件夹在项目导航器中显示为黄色文件夹图标,并且所有包含的文件都被复制到应用程序包的根目录(所以文件可能会发生名称冲突)。

在第二种情况下,添加的文件夹在 Project Navigator 中显示为 blue 文件夹图标(类似于资产目录),当二进制文件是建成。

我认为在第二种情况下你可以使用 NSBundle's -pathForResource:ofType:inDirectory: 访问子目录中的资源。

无论哪种方式,第一个参数应该是没有任何中间子目录的文件名(如评论中提到的@DBoyer)。