如何访问 MPMediaItem 的“排序为”字段?

Posted

技术标签:

【中文标题】如何访问 MPMediaItem 的“排序为”字段?【英文标题】:How to access the "Sort as" field of MPMediaItem? 【发布时间】:2018-04-20 17:03:51 【问题描述】:

iTunes 有一种方法可以对标题以“a”或“the”开头的歌曲进行排序,无需它即可识别。有没有办法访问这个“排序标题”?我很确定 Apple Music 可以做到这一点,我猜它可以通过

访问
let item = MPMediaItem()
let sortName = item.value(forProperty: "someMagicSortNamePropertyIdentifier") as! String

我说的是 iTunes 中的这个字段

【问题讨论】:

【参考方案1】:

所有排序属性的基本格式是 sortProperty,即 sortTitle、sortAlbumTitle、sortAlbumArtist 等。

func sortProperty(for property: String) -> String
    return "sort" + property.prefix(1).uppercased() + property.dropFirst()

【讨论】:

它有效。你无法想象这有多大帮助,非常感谢! 需要注意的是,如果未设置该值,该属性将具有nil,因此如果该值为nil,则回退到实际属性。 无赖,我在 ios 14 上尝试了 sortArtist 和 sortAlbumArtist,但它只是崩溃了。显然它不再可用了。 我刚刚检查过,它仍然可以正常工作。我猜你可能使用了 NSObject 的 valueForKey 而不是 MPMediaEntity 的 valueForProperty 方法。使用 valueForKey 可能会导致此崩溃。

以上是关于如何访问 MPMediaItem 的“排序为”字段?的主要内容,如果未能解决你的问题,请参考以下文章

swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空

MPMediaItem 获取确切的文件大小

是否可以编辑 MPMediaItem 的元数据?

为啥 MPMediaEntity / MPMediaItem 使用 valueForProperty?

如何从 MPMoviePlayerController 获取 MPMediaItem?

获取 MPMediaItem 添加到 iTunes 库的日期