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