【问题标题】:MPMediaQuery invalid valueMPMediaQuery 无效值
【发布时间】:2014-08-09 00:33:36
【问题描述】:

我正在运行 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.'

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

【问题讨论】:

    标签: ios mpmediaitem mpmediaquery mpmediaitemcollection


    【解决方案1】:

    在这一行:

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

    track.title 的值为 nil。你需要做一个检查,比如:

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

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

    【讨论】:

    • 天哪……我认为这是基于日志输出的明显罪魁祸首,所以我早先记录了这些值并确保它们不为零。当我确定时,我改变了设置值的方式,在查询时它们又回到了零。你完全正确,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2014-06-21
    • 1970-01-01
    • 2018-07-12
    • 2013-01-07
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多