我试图创建一个MPMediaQuery,它将按时间顺序返回结果,最好是根据查询本身升序或降序。
现在我的查询以升序计时顺序(最旧的顶部)返回项目,但我希望能够颠倒顺序。 我需要将我的结果放在MPMediaQuery中,以便我可以将它与MPMediaPlayer一起使用。
var qryPodcasts = MPMediaQuery()
var titleFilter = MPMediaPropertyPredicate()
titleFilter = MPMediaPropertyPredicate(value: "This American Life", forProperty: MPMediaItemPropertyPodcastTitle, comparisonType: .equalTo)
qryPodcasts.addFilterPredicate(titleFilter)
EDIT ::
我已经能够更接近目标但是我仍然遇到导致崩溃的问题。
我已添加此代码,该代码将根据" releaseDate"对结果查询进行排序。但并非所有的播客都符合要求,因此这个属性可能会导致崩溃:
let myItems = qryPodcasts.items?.sorted{($0.releaseDate)! > ($1.releaseDate)!}
let podCollection = MPMediaItemCollection(items: myItems!)
myMP.setQueue(with: podCollection!)
如何避免此错误以及如何在没有releaseDate的情况下处理项目?
答案 0 :(得分:0)
仅适用于此部分: 如何避免此错误以及如何在没有releaseDate的情况下处理项目?
避免使用强制解包(!
)并为nil
提供默认值:
let myItems = qryPodcasts.items?.sorted{($0.releaseDate ?? Date.distantFuture) > ($1.releaseDate ?? Date.distantFuture)}
您最好检查代码中的所有其他强制解包,您真的100%确定那些永远不会返回nil
吗?