2015-12-12 59 views
1

我與編程斯威夫特初學者,誰是試圖重新寫,我發現網上說從永久ID找到歌曲代碼查找歌曲。原代碼在這個網站上找到:使用斯威夫特2永久ID編程

http://www.ios-developer.net/iphone-ipad-programmer/development/songs-and-playlists/find-song-from-persistent-id

我想寫在斯威夫特2這段代碼(我不會用Objective-C的),但我缺乏足夠的知識和經驗來翻譯它。

代碼:

MPMediaItem *song; 
MPMediaPropertyPredicate *predicate; 
MPMediaQuery *songQuery; 

predicate = [MPMediaPropertyPredicate predicateWithValue: MyPersistentIdString forProperty:MPMediaItemPropertyPersistentID]; 
songQuery = [[MPMediaQuery alloc] init]; 
[songQuery addFilterPredicate: predicate]; 
if (songQuery.items.count > 0) 
{ 
//song exists 
song = [songQuery.items objectAtIndex:0]; 
CellDetailLabel = [CellDetailLabel stringByAppendingString:[song valueForProperty: MPMediaItemPropertyTitle]]; 
} 

我的問題:

1)這是代碼重新寫斯威夫特,它仍然沒有貶值足夠的電流?

2)如何使用函數調用此代碼?

回答

6

是的,我們可以在Swift中重寫這個。要查找是否有某些內容被棄用,請查閱Apple文檔MPMediaItemMPMediaQuery。如果該類或其某些方法已被棄用,則會在那裏註明。

下面是在Swift中作爲函數重寫的代碼。它通過persistentIdString並返回一個可選MPMediaItem

func findSongWithPersistentIdString(persistentIDString: String) -> MPMediaItem? { 
    let predicate = MPMediaPropertyPredicate(value: persistentIDString, forProperty: MPMediaItemPropertyPersistentID) 
    let songQuery = MPMediaQuery() 
    songQuery.addFilterPredicate(predicate) 

    var song: MPMediaItem? 
    if let items = songQuery.items where items.count > 0 { 
     song = items[0] 
    } 
    return song 
} 
+0

這完全回答了我的問題。謝謝。 –