Ios 从Cloudkit获取音乐文件

Ios 从Cloudkit获取音乐文件,ios,audio,assets,cloudkit,ckasset,Ios,Audio,Assets,Cloudkit,Ckasset,我尝试将用于获取图像资源的代码转换为在cloudkit上获取mp3文件。然而,我无法计算数据部分。我正在用这个库播放音频。它只有一个名为“AudioPlayer”的类,所以如果我想在本地文件夹中播放音乐,就可以声明它 func loadSong(完成:@escaping(uu-song:AudioPlayer?)->()){ // 1 全局(qos:DispatchQoS.QoSClass.background)。异步{ var song:音频播放器! 推迟{ 完成(歌曲) } // 2 gu

我尝试将用于获取图像资源的代码转换为在cloudkit上获取mp3文件。然而,我无法计算数据部分。我正在用这个库播放音频。它只有一个名为“AudioPlayer”的类,所以如果我想在本地文件夹中播放音乐,就可以声明它

func loadSong(完成:@escaping(uu-song:AudioPlayer?)->()){
// 1
全局(qos:DispatchQoS.QoSClass.background)。异步{
var song:音频播放器!
推迟{
完成(歌曲)
}
// 2
guard let asset=self.record[“Song_File”]为?CKAsset else{
回来
}
let songData:AudioPlayer
做{
songData=try Data(contentsOf:asset.fileURL)
}抓住{
回来
}
歌曲=音频播放器(内容:)
}
}

事实上,我不能清楚地做我想做的事。(我想从CloudKit上传一首歌,这首歌下载了ckasset)。下面的代码获取CkAsset的URL,这样我就可以把它放在AVPlayer中并播放

func loadSongURL(completion:@escaping (_ url: URL?) -> ()) {
        // 1
        DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
            var song_url: URL!
            defer {
                completion(song_url)
            }
            // 2
            guard let asset = self.record["Song_File"] as? CKAsset else {
                return
            }

            let songURL: URL
            do {
                print(asset.fileURL)
                songURL = asset.fileURL
            } catch {
                return
            }
           song_url = songURL
func loadSongURL(completion:@escaping (_ url: URL?) -> ()) {
        // 1
        DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
            var song_url: URL!
            defer {
                completion(song_url)
            }
            // 2
            guard let asset = self.record["Song_File"] as? CKAsset else {
                return
            }

            let songURL: URL
            do {
                print(asset.fileURL)
                songURL = asset.fileURL
            } catch {
                return
            }
           song_url = songURL