2016-04-18 14 views
3

iTunesのメディアライブラリからurlに対応するMediaItemを取得する方法、NSstringとしてアセットURLを保存しておきます。アセットURLからメディアアイテムを取得する方法

次のコード

@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アイテムを返しています。

+0

persistent idが役立ちます。 http://stuffnobodytoldmeabout.blogspot.in/2011/05/checking-if-mpmediaitem-exists-by-url.html – MusicMan

答えて

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

    } 
+0

は動作しますが、ハードコードされたインデックスの部分文字列にするのは本当に変です。https ://stackoverflow.com/questions/47220128 –

関連する問題