如何从资产url获取媒体项目

将资产url存储为NSstring,如何从itunes媒体库中获取与url相对应的MediaItem。

使用下面的代码

@objc func getMyMediaItem(SongUrl:NSString)->Void{ let query = MPMediaQuery.songsQuery(); let urlQuery = MPMediaPropertyPredicate(value:SongUrl,forProperty: MPMediaItemPropertyAssetURL,comparisonType: .EqualTo); query.addFilterPredicate(urlQuery); let mediaItem = query.items! as [MPMediaItem]; } 

但是mediaItem总是返回0个项目。

从assetUrl中,持久性Id被计算并通过Id进行查询。

 @objc func getMyMediaItem(SongUrl:NSString)->Void{ let number = SongUrl.substringFromIndex(32); print("my song number "+number); let query = MPMediaQuery.songsQuery(); // let fileUrl = NSURL(fileURLWithPath: SongUrl as String) let urlQuery = MPMediaPropertyPredicate(value:number,forProperty: MPMediaItemPropertyPersistentID,comparisonType: .Contains); query.addFilterPredicate(urlQuery); let mediaItem = query.items! as [MPMediaItem]; }