MPMediaQuery无效值

时间:2014-08-09 00:33:37

标签: ios mpmediaitem mpmediaquery mpmediaitemcollection

我正在运行MPMediaQuery在用户的iPod库中找到一首歌,如下所示:

MPMediaQuery *songQuery = [MPMediaQuery songsQuery];

[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:track.title forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonEqualTo]];

[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:track.album forProperty:MPMediaItemPropertyAlbumTitle comparisonType:MPMediaPredicateComparisonEqualTo]];

[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:track.artist forProperty:MPMediaItemPropertyArtist comparisonType:MPMediaPredicateComparisonEqualTo]];


*** CRASH HERE ***
if (songQuery.items.count > 0) {

    return [songQuery.items objectAtIndex:0];

}

else {

    return nil;

}

应用程序崩溃并吐出:

'invalid value (nil) for property item_extra.title.'

我做错了吗?有没有更好的方法来查询歌曲?谢谢大家!

1 个答案:

答案 0 :(得分:1)

在这一行:

[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:track.title forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonEqualTo]];

track.title的值为零。您需要进行检查,例如:

if (track.title != nil)
{
[songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:track.title forProperty:MPMediaItemPropertyTitle comparisonType:MPMediaPredicateComparisonEqualTo]];
}

编辑:我建议您检查要作为过滤谓词添加的每个变量,以确保它们也不是零!