MPMoviePlayer не работает в приложении

Я пытаюсь создать приложение с моим видео для воспроизведения в представлении с помощью UIButton. К вашему сведению: я использую раскадровку с контроллером представления панели вкладок, поэтому этот код MPMoviePlayerView находится внутри другого представления.

Я продолжаю получать эту ошибку: * Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "* -[NSURL initFileURLWithPath:]: нулевой строковый параметр"

Вот мой код:

VideoTefViewController.h

#import <UIKit/UIKit.h>

@interface VideoTefViewController : UIViewController


-(IBAction)playMovie;
@end

VideoTefViewController.m

#import "VideoTefViewController.h"
#import <MediaPlayer/MediaPlayer.h>
@interface VideoTefViewController ()

@end

@implementation VideoTefViewController

-(IBAction)playMovie {

    NSBundle *bundle = [NSBundle mainBundle];
    NSString *moviePath = [bundle pathForResource:@"tef" ofType:@"mp4"];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath];
    MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    theMovie.scalingMode = MPMovieScalingModeAspectFill;
    [theMovie play];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

person jakife    schedule 24.07.2012    source источник


Ответы (1)


Ошибка сообщает вам, что аргумент fileURLWithPath: равен нулю, поэтому по какой-то причине moviePath равен нулю. Вы уверены, что в вашем комплекте есть файл с именем tef.mp4?

person rdelmar    schedule 24.07.2012
comment
Я уверен, что в моем проекте есть файл с именем tef.mp4. Он находится в моей папке Supporting Files/Resources Files в xcode. Должен ли я поставить куда-нибудь еще? - person jakife; 24.07.2012
comment
@YuvalMarcus, попробуйте записать moviePath сразу после строки, в которой вы его создаете, и посмотрите, равен ли он нулю. - person rdelmar; 24.07.2012
comment
Так что я должен написать: NSlog что? - person jakife; 25.07.2012
comment
Извините за глупый вопрос, я понял: MoviePath это: /Users/ymarcus/Library/Application Support/iPhone Simulator/5.1/Applications/A63749A0-0B7A-4E1C-93A5-93F20C89AB0D/SephardiJews.app/Tefillin.mp4, Итак Я предполагаю, что это не ноль - person jakife; 25.07.2012
comment
Я думал, вы сказали, что файл был tef.mp4?, но это неважно, это явно не ноль. Я не знаю, что сказать — я вставил ваш код в приложение, добавил файл mp4 и переименовал его в tef, и все заработало нормально. У вас есть где-то еще в вашем коде, где вы вызываете initFileURLWithPath: или fileURLWithPath:? - person rdelmar; 25.07.2012
comment
Нет, я больше нигде не вызываю initFileURLWithPath или fileURLWithPath. Теперь у меня почему-то кнопка не выдает ошибку и ничего не делает, просто подсвечивается синим на несколько секунд, и я знаю, что кнопка подключена. Я весьма озадачен! - person jakife; 25.07.2012