2016-04-18 10 views
3

Lassen Sie die Asset-URL als NSstring speichern und wie MediaItem entsprechend der URL aus der itunes-Medienbibliothek abgerufen wird.So erhalten Sie Medienelemente aus der Asset-URL

folgenden Code
@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]; 

    } 

Aber mediaItem immer 0 Produkte zurückkehrt.

+0

Abfrage von persistenten ID hilft. http://stuffnobodytoldmeabout.blogspot.in/2011/05/checking-if-mpmediaitem-exists-by-url.html – MusicMan

Antwort

1

Von AssetUrl wird Persistenz ID berechnet und nach ID abfragen.

@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

funktioniert, aber sieht wirklich komisch zu Teilstring durch hardcoded Index zu haben .. Fragte für einen anderen Weg hier https : //stackoverflow.com/questions/47220128 –

Verwandte Themen