尝试跨启动持久化 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

如何保持 Pusher Client 对象跨页面持久化?

跨浏览器会话持久化javascript对象可能吗? [复制]

Laravel 4.1 身份验证会话数据不会跨请求持久化

即使在跨多个组件路由之后,如何在 Electron 驱动的 React 应用程序中处理持久数据、函数和任务?