我正在运行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.'
我做错了吗?有没有更好的方法来查询歌曲?谢谢大家!
答案 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]];
}
编辑:我建议您检查要作为过滤谓词添加的每个变量,以确保它们也不是零!