NSBundle pathforResource, куда поместить файл фильма

Я не совсем понимаю, как работает pathForResource. Я хотел воспроизвести фильм из своего приложения. Я перетащил его в XCode, установив флажок, чтобы добавить его в подпапки и создать каталог, если это необходимо. Я поместил его в отдельную папку под названием «Видео». Для этого приложения нет папки «Ресурсы» (кто-то удалил ее и подумал, что было бы лучше просто иметь папки для каждого типа ресурсов (img, vid и т. д.). Поэтому я не уверен, куда бросить мой фильм и как доступ к нему с помощью методов NSBundle.Это то, что у меня есть, но, похоже, не играет.

    NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4v"];  
    NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];  
    MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];  
    [moviePlayerController.view setFrame:CGRectMake(120, 120, 300, 200)];
    [[NSNotificationCenter defaultCenter] addObserver:self  
                                             selector:@selector(moviePlaybackComplete:)  
                                                 name:MPMoviePlayerPlaybackDidFinishNotification  
                                               object:moviePlayerController];  
    [self.view addSubview:moviePlayerController.view];  
    moviePlayerController.fullscreen = YES;  
    [moviePlayerController play];  

Спасибо.


person Crystal    schedule 03.10.2011    source источник


Ответы (1)


этот код должен перечислить все в вашем mainBundle

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundleRoot error:nil];
NSArray *files = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.m4v'"]];
NSLog(@"Directory Start");
NSLog(@"%@",dirContents);
NSLog(@"Directory End");
NSLog(@"files: %@",files);

Или вы можете просто зайти в ~user/Library/Application Support/iPhone Simulator и найти свое приложение, щелкнуть по нему правой кнопкой мыши и показать содержимое, чтобы увидеть структуру каталогов вашего приложения.

person syclonefx    schedule 03.10.2011
comment
если я могу NSLog указать путь к файлу, то я предполагаю, что мой путь правильный, верно? В противном случае NSString был бы нулевым, верно? Значит, это должно быть что-то, что я делаю неправильно, играя в фильм, верно? Спасибо. - person Crystal; 04.10.2011
comment
Вы должны ввести оператор if, чтобы проверить, существует ли файл. if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) { // Check to see if file exist // do something } - person syclonefx; 07.10.2011