MPMediaItem发布日期返回零(斯威夫特4)
问题描述:
我想在音乐播放器中获得释放一年的歌曲,但是我得到的全部是返回的零值。我试图用我能想到的方式写下它,它总是返回零。我发现对此很少帮助,除了看起来这是一个已知的问题...这是我发现的一个资源,看起来可能有所帮助: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?
}
}
答
我有同样的问题,并感谢您链接的资源,我设法解决它!我将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
}
}