从 Cloudkit 获取音乐文件

Posted

技术标签:

【中文标题】从 Cloudkit 获取音乐文件【英文标题】:Fetch music file from Cloudkit 【发布时间】:2017-02-10 14:37:00 【问题描述】:

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

https://github.com/tbaranes/AudioPlayerSwift

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

                let songData: AudioPlayer
                do 
                    songData = try Data(contentsOf: asset.fileURL)
                 catch 
                    return
                
                song = AudioPlayer(contentsOf: <#T##URL#>)

                      
        

【问题讨论】:

【参考方案1】:

实际上,我无法清楚地做我想做的事。 (我想从 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

【讨论】:

以上是关于从 Cloudkit 获取音乐文件的主要内容,如果未能解决你的问题,请参考以下文章

仅获取 cloudkit 中的特定字段?

从 CloudKit 获取包括 CKReference 的数据

如何从 CloudKit 查询和获取数据?

从当前 iCloud 用户获取 CloudKit 记录

如何使用 Cloudkit 快速从 iCloud 获取当前用户信息

CloudKit 无法从公共容器中获取数据。错误 1/4000