2017-07-22 97 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 
    } 
}