sol*_*oid 5 mpmediaitem mpmediaquery ios swift
MPMedia API 中的有趣错误
我的音乐应用程序中存在一个持续存在的错误,我现在终于找到了它(现在我正在快速重写它)。它有几个方面。(使用系统音乐播放器)
好吧,真是愚蠢又令人气愤。
现在回答我的问题:
对于无法知道云项目是否在设备上(通过 iTunes)的情况,我无能为力。但是,我/应该/能够过滤掉某个项目是否具有 assetURL,这保证了它是本地的且可用。
let filter:MPMediaPropertyPredicate = MPMediaPropertyPredicate(value: "ipod", forProperty: MPMediaItemPropertyAssetURL, comparisonType: MPMediaPredicateComparison.Contains)
Run Code Online (Sandbox Code Playgroud)
这将返回 0 个项目。有谁知道过滤此属性的方法?在这里这样做似乎是最干净的,并且应该让查询返回 items 和 itemSections。我的所有表都是从查询中填充的,我认为没有一种方法可以手动重建表。
URL 的格式如下:ipod-library://item/item.m4a?id=5314739480586915369
现在,我怀疑在填充表视图等时可以添加捕获,但感觉真的很混乱。
这是 ios 9.2.1、Swift 2、Xcode 7.2.1
我还没有擦手机并重新复制歌曲。如果 assetURL 不存在,则从音乐应用程序手动下载它们是项目获取 assetURL 的唯一方法。
它效率不高,但您可以做一件事:
let query = MPMediaQuery()
let allItems = query.items ?? []
let items = allItems.filter { $0.assetURL?.scheme?.hasPrefix("ipod") ?? false }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
983 次 |
最近记录: |