Xcode 升级到9.0 后无法通过mainBundle获取资源文件的解决办法

Xcode 升级到9.0 无法通过mainBundle获取资源文件解决办法

Xcode 升级到9.0 后无法通过mainBundle获取资源文件的解决办法

项目文件结构如下:

Xcode 升级到9.0 后无法通过mainBundle获取资源文件的解决办法

问题描述:

最近发现一个奇葩问题:就是Xcode升级到9.0 后出现无法通过NSBundle的 mainBundle方法获取资源文件。

代码如下

-(void)createAVPlay{

   //P1:file name, P2:expanding name

    NSString * str=[[NSBundlemainBundle] pathForResource:@"Sunday"ofType:@"mp3"];

//通过上面这行代码无法获取到测试资源文件“Sunday.mp3

   //NSURL * urlMusic=[NSURL URLWithString:str];

    NSURL * urlMusic=[NSURLfileURLWithPath:str];

    NSLog(@"url=%@",urlMusic);

   //P1:audio play address

    player=[[AVAudioPlayeralloc] initWithContentsOfURL:urlMusicerror:nil];

    [playerprepareToPlay];

   //-1 infinite loop

    player.numberOfLoops=1;

    

   //set the volume

    player.volume=0.5;

    

}


解决方案:

  设置Bundle Resource, 选中工程->Build Phases->Copy Bundle Resources。

Xcode 升级到9.0 后无法通过mainBundle获取资源文件的解决办法

Xcode 升级到9.0 后无法通过mainBundle获取资源文件的解决办法

问题得到解决