如何根据发布日期将 MPMediaQuery 生成 return 结果

How to make an MPMediaQuery to return results based on releaseDate

我正在尝试创建一个 MPMediaQuery,它将 return 结果按时间顺序排列,最好根据查询本身升序或降序。

现在我的查询 returns 项按时间升序排列(最早的在顶部),但我希望能够颠倒顺序。 我需要我的结果在 MPMediaQuery 中,以便我可以将它与 MPMediaPlayer 一起使用。

var qryPodcasts = MPMediaQuery()
var titleFilter = MPMediaPropertyPredicate()
titleFilter = MPMediaPropertyPredicate(value: "This American Life", forProperty: MPMediaItemPropertyPodcastTitle, comparisonType: .equalTo)
qryPodcasts.addFilterPredicate(titleFilter)

编辑::

我离目标又近了一步,但是我仍然遇到导致崩溃的问题。

我添加了这段代码,它将根据 "releaseDate" 对结果查询进行排序,但并非所有 Podcast 都符合要求,因此 属性 可能为 nil,从而导致崩溃:

let myItems = qryPodcasts.items?.sorted{([=12=].releaseDate)! > (.releaseDate)!}
let podCollection = MPMediaItemCollection(items: myItems!)
myMP.setQueue(with: podCollection!)

如何避免此错误以及如何处理没有发布日期的项目?

仅此部分: 如何避免此错误以及如何处理没有发布日期的项目?

避免使用强制展开 (!) 并为 nil:

提供默认值
let myItems = qryPodcasts.items?.sorted{([=10=].releaseDate ?? Date.distantFuture) > (.releaseDate ?? Date.distantFuture)}

您最好检查代码中的所有其他强制解包,您真的 100% 确定那些永远不会 return nil