我正在将(mediaItemCollection.items.first?.assetURL!.absoluteString)
作为字符串保存到本地SQLite数据库。 现在我想从保存的字符串即assetURL!.absoluteString
创建 MPMediaItem 对象,是否可以从其评估 URL 创建 MPMediaItem 对象?如果不可能,那么我应该将什么保存到SQLite DB,以便我可以从保存的属性创建MPMediaItem的对象?
我从@user28434建议中找到了解决方案。
我正在将持久性ID作为字符串保存到SQLite数据库
let songItem = mediaItemCollection.representativeItem!
let persistantID = String(songItem.persistentID)
从这个persistentID
我能够使用MPMediaQuery
创建MPMediaItem
对象,同时从数据库中获取存储persistentID
。
按照创建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]
}