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 无效值的主要内容,如果未能解决你的问题,请参考以下文章
提供的值无效(IRI 无效?) 测试 api 平台端点时出错
错误:错误域 = NSCocoaErrorDomain 代码 = 3840“字符 0 周围的值无效。” UserInfo=NSDebugDescription=字符 0 周围的值无效。
错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4