2017-07-22 30 views
0

我想在音樂播放器中獲得釋放一年的歌曲,但是我得到的全部是返回的零值。我試圖用我能想到的方式寫下它,它總是返回零。我發現對此很少幫助,除了看起來這是一個已知的問題...這是我發現的一個資源,看起來可能有所幫助:Get album year for item in iPod library?但我相信這是客觀的C.我的問題是這樣的。有誰知道如何在Swift代碼中獲得MPMediaItems的發佈日期?或者懂得如何將鏈接的文章翻譯成Swift語言供我試用。謝謝一堆!MPMediaItem發佈日期返回零(斯威夫特4)

func getYear() { 
    let mediaQuery = MPMediaQuery.songs() 
    for songs in mediaQuery.items! { 
     print(songs.title) 
     print(songs.releaseDate) 
     print(((songs.value(forProperty: MPMediaItemPropertyReleaseDate)!)) 
     print(songs.getReleaseDate()) 
    } 
} 

extension MPMediaItem { 
    @available(iOS 10.0, *) 
    func getReleaseDate() -> Date? { 
     return self.perform(#selector(getter: MPMediaItem.releaseDate))?.takeUnretainedValue() as! NSDate? as Date? 
    } 
} 

回答

0

我有同樣的問題,並感謝您鏈接的資源,我設法解決它!我將Objective-C代碼翻譯成了Swift 4,即使在iOS 11上使用Xcode 9,它的功能也像魅力一樣,代碼如下:

let yearNumber: NSNumber = item.value(forProperty: "year") as! NSNumber 
if (yearNumber.isKind(of: NSNumber.self)) { 
    let year = yearNumber.intValue 
    if (year != 0) { 
       // do something with year 
    } 
}