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

时间:2016-04-18 19:48:58

标签: ios objective-c swift

将资产网址存储为NSstring,如何从itunes媒体库获取与网址对应的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项。

1 个答案:

答案 0 :(得分:1)

从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]; 

  }