ios – MPMediaQuery仅返回本地项目

前端之家收集整理的这篇文章主要介绍了ios – MPMediaQuery仅返回本地项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想显示一个UITableView,只显示设备上当前的歌曲.

如果我查询所有项目我(显然)获得所有项目,包括我购买但未下载的项目.
这是代码的(部分)

@property (strong,nonatomic) NSMutableArray *songsList;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    MPMediaQuery *everything = [[MPMediaQuery alloc] init];
    NSArray *itemsFromGenericQuery = [everything items];
    self.songsList = [NSMutableArray arrayWithArray:itemsFromGenericQuery];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.songsList.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"TableCellID";
    TableCellTitle *tablecell = (TableCellTitle *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
MPMediaItem *song = [self.songsList objectAtIndex:indexPath.row];

    NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
    tablecell.cellSongname.text = songTitle;

    return tablecell;
}

我已经阅读了一些关于涉及的事情

[song valueForProperty:MPMediaItemPropertyIsCloudItem]

但是不能像我上面解释的那样让它工作.
有什么建议?

解决方法

我通过在MPMediaQuery …和NSArray之间的viewDidLoad方法添加以下行来解决它…
[everything addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithBool:NO] forProperty:MPMediaItemPropertyIsCloudItem]];

猜你在找的iOS相关文章