返回 Nil 的 MPMediaItem 的发布日期(Swift 4)

Posted

技术标签:

【中文标题】返回 Nil 的 MPMediaItem 的发布日期(Swift 4)【英文标题】:Release Date of MPMediaItem returning Nil (Swift 4) 【发布时间】:2017-07-22 12:20:11 【问题描述】:

我正在尝试在音乐播放器中获得歌曲的发行年份,但我得到的只是返回的 nil 值。我试过用我能想到的各种方式来写它,它总是返回 nil。除了这似乎是一个已知问题外,我几乎没有找到任何帮助......这是我发现的一个看起来可能有帮助的资源:@​​987654321@ 但我相信这是客观的 C。我的问题是这个.有谁知道如何在 Swift 代码中获取 MPMediaItems 的发布日期?或者知道如何将链接的文章翻译成 Swift 语言供我尝试。非常感谢!

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?
    

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,感谢您链接的资源,我设法解决了!我将 Objective-C 代码翻译成 Swift 4,即使在带有 Xcode 9 的 iOS 11 上,它也能像魅力一样工作,代码如下:

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
    

【讨论】:

以上是关于返回 Nil 的 MPMediaItem 的发布日期(Swift 4)的主要内容,如果未能解决你的问题,请参考以下文章

来自曲目 MPMediaItem 的专辑插图

MPMediaItem 到 AVAsset 到 .MP3

具有空 URL 的 Objective-C MPMediaItem

如何提高 MPMediaItem 的频率范围? (如参数均衡器,例如,将 500 Hz 提高 12 dB)

如何从 MPMoviePlayerController 获取 MPMediaItem?

无法下标 [MPMediaItem] #2 类型的值