2017-03-12 4 views
0

結果を時間順に、好ましくはクエリ自体に基づいて昇順または降順に返すMPMediaQueryを作成しようとしています。releaseDateに基づいて結果を返すようにMPMediaQueryを作成する方法

今、私のクエリは、昇順のクロノオーダー(一番上で最も古いアイテム)を返しますが、その順序を逆にすることができます。 MPMediaPlayerで使用できるように、結果がMPMediaQueryにある必要があります。

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

EDIT ::

私は近い私の目標にしかし、私はまだクラッシュする問題を抱えているステップを得ることができました。 「RELEASEDATE」に基づいて結果のクエリは、しかし、すべてのポッドキャストは、このプロパティはクラッシュを引き起こしてnilをできるように適合しないソートされます、私はこのコードを追加しました

let myItems = qryPodcasts.items?.sorted{($0.releaseDate)! > ($1.releaseDate)!} 
let podCollection = MPMediaItemCollection(items: myItems!) 
myMP.setQueue(with: podCollection!) 

どのように私はこのエラーを回避することができますし、 releaseDateなしでアイテムを処理するにはどうすればよいですか?

答えて

0

このエラーを回避するにはどうすればよいですか?releaseDateなしでアイテムを処理するにはどうすればよいですか?

避けnilのデフォルト値を強制アンラップ(!)を使用して提供します。

let myItems = qryPodcasts.items?.sorted{($0.releaseDate ?? Date.distantFuture) > ($1.releaseDate ?? Date.distantFuture)} 

あなたはより良いあなたのコード内の他のすべての強制unwrappingsを確認したいが、あなたはそれらの本当に100%確認されることはありません返信nil

+0

スウィフトのこのラッピング/アンラッピング用品は私をナッツドライブに正直言ってください!私は通常、コンパイラに何をすべきかを指示させます... – wayneh

関連する問題