Swift 如何从assetURL!创建MPMediaItem!。绝对字符串?

Swift 如何从assetURL!创建MPMediaItem!。绝对字符串?,swift,mpmediaitem,mpmediapickercontroller,mpmediaitemcollection,Swift,Mpmediaitem,Mpmediapickercontroller,Mpmediaitemcollection,我正在将(mediaItemCollection.items.first?.assetURL!.absoluteString)作为字符串保存到本地SQLite DB。 现在,我想从保存的字符串(即assetURL!)中创建MPMediaItem对象!。absoluteString,是否可以从其assesURL创建MPMediaItem对象?如果不可能,那么我应该将什么保存到SQLite DB,以便从保存的属性创建MPMediaItem的对象 我已经从@user28434建议中找到了解决方案 我正

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

我已经从@user28434建议中找到了解决方案

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

让songItem=mediaItemCollection.representativeItem!
让persistandi=String(songItem.persistentID)
通过这个
persistentID
我可以在从数据库获取存储的
persistentID
时使用
MPMediaQuery
创建
MPMediaItem
对象

按照以下方法创建
MPMediaItem
对象

让noCloudPre=MPMediaPropertyPredicate(值:NSNumber(booleanLiteral:false)),
forProperty:MPMediaItemPropertyIsCloudItem)
func getSongItem(persistandi:String)->MPMediaItem{
让songQuery=MPMediaQuery.songs()
songQuery.addFilterPredicate(noCloudPre)
songQuery.addFilterPredicate(MPMediaPropertyPredicate)(值:persistandi,
forProperty:MPMediaItemPropertyTypersistentId,
比较类型:MPMediaPredicateComparison.equalTo)
是否返回songQuery.items?[0]
}

我已经从@user28434建议中找到了解决方案

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

让songItem=mediaItemCollection.representativeItem!
让persistandi=String(songItem.persistentID)
通过这个
persistentID
我可以在从数据库获取存储的
persistentID
时使用
MPMediaQuery
创建
MPMediaItem
对象

按照以下方法创建
MPMediaItem
对象

让noCloudPre=MPMediaPropertyPredicate(值:NSNumber(booleanLiteral:false)),
forProperty:MPMediaItemPropertyIsCloudItem)
func getSongItem(persistandi:String)->MPMediaItem{
让songQuery=MPMediaQuery.songs()
songQuery.addFilterPredicate(noCloudPre)
songQuery.addFilterPredicate(MPMediaPropertyPredicate)(值:persistandi,
forProperty:MPMediaItemPropertyTypersistentId,
比较类型:MPMediaPredicateComparison.equalTo)
是否返回songQuery.items?[0]
}

对于本地文件,URL
绝对字符串
无论如何都是错误的API。
assetURL
包含
persistentID
,您可以通过它进行查询。但是你肯定应该存储一些其他信息,而不是
url
hey@user28434和@vadian知道应该使用什么来代替
absoluteString
?在我的项目中,我正在保存关于歌曲本身的信息。像
Name
Artists
等,但这仅仅是因为在我的项目中,用户可以在他们的设备之间共享有关媒体的信息,
persistentID
(和
assetur
)在不同的设备上完全不同。我用它来查询
MPMediaItem
。但是在您的情况下,如果对媒体的“引用”永远不会离开设备,您可以只存储
persistentID
。嘿@user28434您能解释一下如何通过
persistentID
进行查询吗?我找不到这样做的方法。对于本地文件,URL
absoluteString
无论如何都是错误的API。
assetURL
包含
persistentID
,您可以通过它进行查询。但是你肯定应该存储一些其他信息,而不是
url
hey@user28434和@vadian知道应该使用什么来代替
absoluteString
?在我的项目中,我正在保存关于歌曲本身的信息。像
Name
Artists
等,但这仅仅是因为在我的项目中,用户可以在他们的设备之间共享有关媒体的信息,
persistentID
(和
assetur
)在不同的设备上完全不同。我用它来查询
MPMediaItem
。但是在您的情况下,如果对媒体的“引用”永远不会离开设备,您可以只存储
persistentID
。嘿@user28434您能解释一下如何通过
persistentID
进行查询吗?我找不到这样做的方法。将它存储为一个数字会更有效将它存储为一个数字会更有效