Ios 使用MPMediaQuery在iPod库中用视频填充UITableView时出现问题
我正在尝试组合一个简单的应用程序,列出iPod库中的所有视频(电影、电视节目等),并允许用户播放他们选择的任何视频。该应用程序正在使用一个故事板,其中有一个导航控制器,其中包含UITableView 看起来该查询实际上是在获取MPMediaItems,但是没有使用每个电影的标题更新单元格。你能看看这个,告诉我我做错了什么吗 以下是.h:Ios 使用MPMediaQuery在iPod库中用视频填充UITableView时出现问题,ios,uitableview,storyboard,mpmediaquery,Ios,Uitableview,Storyboard,Mpmediaquery,我正在尝试组合一个简单的应用程序,列出iPod库中的所有视频(电影、电视节目等),并允许用户播放他们选择的任何视频。该应用程序正在使用一个故事板,其中有一个导航控制器,其中包含UITableView 看起来该查询实际上是在获取MPMediaItems,但是没有使用每个电影的标题更新单元格。你能看看这个,告诉我我做错了什么吗 以下是.h: #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> @interf
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface MovieListViewController : UITableViewController
{
MPMediaQuery * _movieQuery;
NSArray * _movieArray;
}
@property (nonatomic,strong) MPMediaQuery *movieQuery;
@property (nonatomic,strong) NSArray *movieArray;
@end
问题在于这一行:
MPMediaItem *item = [[self.movieQuery items]objectAtIndex:[indexPath row]];
改为:
MPMediaItem *item = [movieArray objectAtIndex:[indexPath row]];
您没有向movieQuery
对象添加任何内容,而是在viewDidLoad
中创建了一个本地MPMediaQuery
对象并使用了它
另一种解决方案:
更改viewDidLoad
如下:
- (void)viewDidLoad
{
[super viewDidLoad];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeAnyVideo] forProperty:MPMediaItemPropertyMediaType];
self.movieQuery = [[MPMediaQuery alloc] init];
[movieQuery addFilterPredicate:predicate];
NSLog(@"movieQuery got back %u results",[[self.movieQuery items]count]);
self.movieArray = [self.movieQuery items];
}
问题在于这一行:
MPMediaItem *item = [[self.movieQuery items]objectAtIndex:[indexPath row]];
改为:
MPMediaItem *item = [movieArray objectAtIndex:[indexPath row]];
您没有向movieQuery
对象添加任何内容,而是在viewDidLoad
中创建了一个本地MPMediaQuery
对象并使用了它
另一种解决方案:
更改viewDidLoad
如下:
- (void)viewDidLoad
{
[super viewDidLoad];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeAnyVideo] forProperty:MPMediaItemPropertyMediaType];
self.movieQuery = [[MPMediaQuery alloc] init];
[movieQuery addFilterPredicate:predicate];
NSLog(@"movieQuery got back %u results",[[self.movieQuery items]count]);
self.movieArray = [self.movieQuery items];
}
发现问题了*项目需要来自movieArray,而不是movieQuery。正确的代码是MPMediaItem*item=[self.movieArray objectAtIndex:[indexPath行]];发现问题了*项目需要来自movieArray,而不是movieQuery。正确的代码是MPMediaItem*item=[self.movieArray objectAtIndex:[indexPath行]];