如何从 assetURL!.absoluteString 创建 MPMediaItem?
How to create MPMediaItem from assetURL!.absoluteString?
我将 (mediaItemCollection.items.first?.assetURL!.absoluteString)
作为字符串保存到本地 SQLite 数据库。
现在我想从保存的字符串创建 MPMediaItem 对象,即 assetURL!.absoluteString
,是否可以从其 assesURL 创建 MPMediaItem 对象?如果不可能,那么我应该将什么保存到 SQLite DB,以便我可以从保存的 属性 中创建 MPMediaItem 对象?
我已经从@user28434 的建议中找到了解决方案。
我正在将 persistentID 作为字符串保存到 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]
}
我将 (mediaItemCollection.items.first?.assetURL!.absoluteString)
作为字符串保存到本地 SQLite 数据库。
现在我想从保存的字符串创建 MPMediaItem 对象,即 assetURL!.absoluteString
,是否可以从其 assesURL 创建 MPMediaItem 对象?如果不可能,那么我应该将什么保存到 SQLite DB,以便我可以从保存的 属性 中创建 MPMediaItem 对象?
我已经从@user28434 的建议中找到了解决方案。
我正在将 persistentID 作为字符串保存到 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]
}