尝试跨启动持久化 MPMediaItem
Posted
技术标签:
【中文标题】尝试跨启动持久化 MPMediaItem【英文标题】:Trying to persist a MPMediaItem across launches 【发布时间】:2018-07-17 05:14:11 【问题描述】:我已经存储了 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
【问题讨论】:
【参考方案1】:这是一个错误(原文如此。),我很好奇为什么编译器没有捕捉到。
//at this point collection.items[0] contains the expected MPMediaItem
//why accessing collection[0] works at all is mysterious
【讨论】:
但是你的实际代码都没有说collection[0]
。这只是您在某些cmets 中使用的短语。 — 无论如何,如果这是您现在的问题,请将其作为您的问题 的一部分。不要在答案字段中提问。以上是关于尝试跨启动持久化 MPMediaItem的主要内容,如果未能解决你的问题,请参考以下文章
跨 4 个单独的 UITableView 持久化单个 UISearchBar 实例
MPMediaItem 的唯一 ID,而不是 persistentID