我已经保存了从MPMediaPickerController返回的MPMediaItem,方法是保存其持久ID(即MPMediaEntityPersistentID)。当我将其传递给MPMediaQuery时,我得到的是MPMediaEntity(MPMediaItem的超类)。尝试将其强制转换为MPMediaItem会产生异常。
// recover MPMediaItem
let predicateId = MPMediaPropertyPredicate(value: self.persistentID?.uint64Value,
forProperty: MPMediaItemPropertyPersistentID,
comparisonType:MPMediaPredicateComparison.equalTo)
let query = MPMediaQuery.init()
query.addFilterPredicate(predicateId)
let collection = MPMediaItemCollection(items: query.items!)
//at this point collection[0] contains a MPMediaEntry
答案 0 :(得分:-1)
这是一个错觉(很奇怪),我很好奇为什么编译器没有捕获。
//at this point collection.items[0] contains the expected MPMediaItem
//why accessing collection[0] works at all is mysterious