0

我将(mediaItemCollection.items.first?.assetURL!.absoluteString)作为字符串保存到本地 SQLite DB。现在我想从保存的字符串创建 MPMediaItem 对象,即assetURL!.absoluteString,是否可以从它的 assesURL 创建 MPMediaItem 对象?如果不可能,那么我应该将什么保存到 SQLite DB 以便我可以从保存的属性创建 MPMediaItem 对象?

4

1 回答 1

2

我从@user28434 的建议中找到了解决方案。

我将 persistentID 作为字符串保存到 SQLite DB

 let songItem = mediaItemCollection.representativeItem!
 let persistantID = String(songItem.persistentID)

由此persistentID,我可以在从数据库中 获取存储的同时创建MPMediaItem对象。MPMediaQuerypersistentID

以下方式创建MPMediaItem对象。

 let noCloudPre = MPMediaPropertyPredicate(value: NSNumber(booleanLiteral: false),
                                              forProperty: MPMediaItemPropertyIsCloudItem)

    func getSongItem(persistantID: String) -> MPMediaItem?{
        let songQuery = MPMediaQuery.songs()
        songQuery.addFilterPredicate(noCloudPre)
        songQuery.addFilterPredicate(MPMediaPropertyPredicate(value: persistantID,
                                    forProperty: MPMediaItemPropertyPersistentID,
                                    comparisonType: MPMediaPredicateComparison.equalTo))
        return songQuery.items?[0]
    }

于 2020-01-03T11:04:55.877 回答