我保存了从MPMediaPickerController返回的MPMediaItem的persistentID(它是一个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
这是一个错误(原文如此(,我很好奇编译器为什么没有捕捉到。
//at this point collection.items[0] contains the expected MPMediaItem
//why accessing collection[0] works at all is mysterious