Objective c 终止调用并引发异常

Objective c 终止调用并引发异常,objective-c,video,Objective C,Video,我已经制作了一段用于播放视频文件的代码。但当我构建它时,我得到以下错误: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSURL initFileURLWithPath:]:nil字符串参数' 第一次抛出调用堆栈: (0x1ed8022 0x11c0cd6 0x1e80a48 0x1e809b9 0xc6553b 0xc654c5 0x2be8 0x1ed9e99 0x32614e 0x3260e6 0x3ccade 0x3ccfa7 0x

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

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSURL initFileURLWithPath:]:nil字符串参数' 第一次抛出调用堆栈: (0x1ed8022 0x11c0cd6 0x1e80a48 0x1e809b9 0xc6553b 0xc654c5 0x2be8 0x1ed9e99 0x32614e 0x3260e6 0x3ccade 0x3ccfa7 0x3cc266 0x34b3c0 0x34b5e6 0x331dc4 0x325634 0x17baef5 0x1eac195 0x1e10ff2 0x1e0f8da 0x1ED84 0x1e0ec9b 0x17b97d8 0x17b988a 0x323626 0x29b2 0x2925) 终止引发异常的调用

我已经尝试了很多来修复它,但是没有任何效果!你没有解决办法吗?是的,我已经实现了mediaplayer框架

我已对以下代码进行了编码:

-(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的方法来获取资源,而不是使用基于字符串的文件路径。但是一次只能做一件事。

我已经测试过了,并且得到了NSLog!现在怎么办?正如它所说的,您的包中没有您期望的文件。您正在将文件添加到参考资料中吗?它在子目录中吗?它有完全相同的名称吗?显然不是,因为它记录的条件是它无法在您期望的位置找到文件。