Terminate调用抛出异常



我制作了一段播放视频文件的代码。但当我构建它时,我得到了以下错误:

由于未捕获异常"NSInvalidArgumentException"而终止应用程序,原因:"-[NSURL initFileURLWithPath:]:nil字符串参数"首次抛出调用堆栈:(0x1ed8022 0x11c0cd6 0x1e80a48 0x1e809b9 0xc6553b 0xc654c5 0x2be8 0x1ed9e99 0x32614e 0x3260e6 0x3ccade 0x3ccfa 0x3cc266 0x4b3c0 0x4b5e6 0x31dc4 0x25634 0x17baef5 0x1eac195 0x1e10f2 0x1e0f8da 0x1e0ed84 0x1e0ec9b 0x17b97d8 0x17b988a 0x323626 0x29b2 0x2925)terminate调用抛出异常

我试了很多方法来修复它,但都不起作用!你没有解决方案吗?是的,我已经实现了媒体播放器框架!

我已经编码了以下代码:

-(IBAction)playvideo {
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"film" ofType:@"mp4"]];
    MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc]
                                                     initWithContentURL:url];
    [self presentMoviePlayerViewControllerAnimated:playercontroller];
    playercontroller.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
    [playercontroller.moviePlayer play];
    [playercontroller release];
    playercontroller = nil;
}

这一行描述了问题:

由于未捕获异常"NSInvalidArgumentException"而终止应用程序,原因:"-[NSURL initFileURLWithPath:]:nil字符串参数"

它告诉您,您正在将一个nil传递给一个不允许使用nil的参数。

确保这是问题所在的步骤:

-(IBAction)playvideo {
    NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"film" ofType:@"mp4"]
    if (!videoPath) {
        NSLog(@"Video path is nil. My bundle must be set up incorrectly");
        return; // return early.
    }
    NSURL *url = [NSURL fileURLWithPath:videoPath];
    MPMoviePlayerViewController *playercontroller = [[MPMoviePlayerViewController alloc]
                                                     initWithContentURL:url];
    // The rest of your implementation here. 
}

这至少可以帮助您定位问题。

顺便说一句,您应该使用基于URL的方法来获取资源,而不是基于字符串的文件路径。但一件事一件事。

最新更新