MPMediaQuery 无效值

Posted

技术标签:

【中文标题】MPMediaQuery 无效值【英文标题】:MPMediaQuery invalid value 【发布时间】: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.'

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

【问题讨论】:

【参考方案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]];

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

【讨论】:

天哪……我认为这是基于日志输出的明显罪魁祸首,所以我早先记录了这些值并确保它们不为零。当我确定时,我改变了设置值的方式,在查询时它们又回到了零。你完全正确,谢谢!

以上是关于MPMediaQuery 无效值的主要内容,如果未能解决你的问题,请参考以下文章

asp 中 错误的参数个数或无效的参数属性值问题

错误的参数个数或无效的参数属性值: 'rs'怎么解决

无效日期的“无效日期”? [复制]

提供的值无效(IRI 无效?) 测试 api 平台端点时出错

错误:错误域 = NSCocoaErrorDomain 代码 = 3840“字符 0 周围的值无效。” UserInfo=NSDebugDescription=字符 0 周围的值无效。

错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4