因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** - [NSURL initFileURLWithPath:]:nil string parameter'

时间:2012-05-15 04:07:31

标签: objective-c crash nsurl

我正在尝试在调用时随机播放4个音频文件。这是代码

  // randomize the playback on the setShot files
   int randomNumber = arc4random() % 4 + 1;
   NSString *tmpFileName = [[NSString alloc] initWithFormat:@"SetShot%d", randomNumber];
   NSString *fileName = [[NSBundle mainBundle] pathForResource:tmpFileName ofType:@"aif"];
   SystemSoundID soundID;
   AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:fileName], &soundID);
   AudioServicesPlaySystemSound (soundID);

我在我的设备上没有在模拟器中发生上述崩溃。我对编码很新。 谢谢你的帮助。

声音文件为SetShot01至SetShot04

ARC-armv6,armv7 xcode 4.3.2在设备上使用5.1.1

1 个答案:

答案 0 :(得分:2)

您的tmpFileName文件可能不存在于主包中。这将导致一个零URL。这是因为你说你的文件名是SetShot0 [1-4],而你创建的字符串是SetShot [1-4]。变化

NSString *tmpFileName = [[NSString alloc] initWithFormat:@"SetShot%d", randomNumber];

读为

 NSString *tmpFileName = [[NSString alloc] initWithFormat:@"SetShot0%d", randomNumber];