iOS查询通过相册MPMediaEntityPersistentID有时会带回没有歌曲

我正在编写一个使用Apple内置MediaPlayer库播放音乐的应用程序。 我存储了一系列专辑和一组ID,然后当选择一个时,我使用id搜索一个专辑。 出于某种原因,尽管有一个与之相关联的id,但有些专辑找不到任何歌曲。 每次都是相同的专辑不起作用,似乎没有任何模式。

我使用以下代码将名称和ID存储到两个数组中

let query = MPMediaQuery.albumsQuery() let mediaCollection = MPMediaItemCollection(items: query.items!) for album in mediaCollection.items { albumTitleArray.append(album.albumTitle!) albumIdArray.append(album.albumPersistentID) } 

选择一个后,我将id传递给queryMedia方法

 func queryMedia(identifier:MPMediaEntityPersistentID) -> MPMediaItemCollection { let predicateId = MPMediaPropertyPredicate(value: String(identifier), forProperty: MPMediaItemPropertyAlbumPersistentID, comparisonType:MPMediaPredicateComparison.EqualTo) let query = MPMediaQuery.init() query.addFilterPredicate(predicateId) let collection = MPMediaItemCollection(items: query.items!) return collection; } 

任何帮助解决这个问题将不胜感激!

必须存在一些字符格式错误,或者在从MPMediaEntityPersistentID到String的转换导致的查询中出现比较错误。

我已将代码更改为转换为NSNumber,现在查询正确查找所有相册。

在上面的代码示例中更改此部分

 String(identifier) 

 NSNumber(unsignedLongLong: identifier) 

所以它看起来像这样

 func queryMedia(identifier:MPMediaEntityPersistentID) -> MPMediaItemCollection { let predicateId = MPMediaPropertyPredicate(value: NSNumber(unsignedLongLong: identifier), forProperty: MPMediaItemPropertyAlbumPersistentID, comparisonType:MPMediaPredicateComparison.EqualTo) let query = MPMediaQuery.init() query.addFilterPredicate(predicateId) let collection = MPMediaItemCollection(items: query.items!) return collection; }