Swift3 如何基于releaseDate进行MPMediaQuery以返回结果

Swift3 如何基于releaseDate进行MPMediaQuery以返回结果,swift3,mpmediaquery,Swift3,Mpmediaquery,我正在尝试创建一个MPMediaQuery,它将按时间顺序返回结果,最好是根据查询本身升序或降序返回结果 现在,我的查询以升序返回项目,最早的在顶部,但我希望能够颠倒顺序。 我需要将结果放在MPMediaQuery中,以便将其与MPMediaPlayer一起使用 var qryPodcasts = MPMediaQuery() var titleFilter = MPMediaPropertyPredicate() titleFilter = MPMediaPropertyPredicate(v

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

现在,我的查询以升序返回项目,最早的在顶部,但我希望能够颠倒顺序。 我需要将结果放在MPMediaQuery中,以便将其与MPMediaPlayer一起使用

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

我已经离我的目标更近了一步,但是我仍然有一个导致崩溃的问题

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

let myItems = qryPodcasts.items?.sorted{($0.releaseDate)! > ($1.releaseDate)!}
let podCollection = MPMediaItemCollection(items: myItems!)
myMP.setQueue(with: podCollection!)
如何避免此错误以及如何处理没有发布日期的项目?

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

避免使用强制展开!并为nil提供默认值:


您最好检查代码中的所有其他强制展开,您真的100%确定这些不会返回零吗?

老实说,Swift中的这些打包/展开内容让我发疯!我通常只是让编译器指出应该做什么。。。
let myItems = qryPodcasts.items?.sorted{($0.releaseDate ?? Date.distantFuture) > ($1.releaseDate ?? Date.distantFuture)}