Swift MPMediaPropertyPredicateでIsCloudItemをFilter

MPMediaPropertyPredicate

iPhone本体にある曲を対象

let iCloudFilter = MPMediaPropertyPredicate(value: false,
                                            forProperty: MPMediaItemPropertyIsCloudItem,
                                            comparisonType: .equalTo)

MPMediaQuery.albums()

var mediaQuery = MPMediaQuery.albums()
mediaQuery.addFilterPredicate(iCloudFilter)
var albumCollections = self.mediaQuery!.collections!

albumCollectionsにはクラウド上にある曲は入っていない。

MPMediaQuery.albums()

var mediaQuery = MPMediaQuery.playlists()
mediaQuery.addFilterPredicate(iCloudFilter)
var playlistsCollections = self.mediaQuery!.collections!

playlistsCollectionsにはクラウド上にある曲も入っている。
プリリストは絞り込めないようだ。
代替え案は、絞らないで取得して、コレクション内の代表Itemを個別にチェックしてフィルタリングする。

playlistsCollections
    .filter({ collection in
        var result = false
            if settingData.iCloud == true {
                result = collection.representativeItem?.isCloudItem == true
            }
            return result
        })

Swift

Posted by shi-n