swift - 使用 Cloudkit Assets 作为 UIimage

标签 swift cloudkit ckquery ckasset

我将图像作为 Assets 保存在 CloudKit 中。每条记录还有其他属性。我可以收集记录并使用其他属性,但我无法在我的 ImageView 中使用该 Assets 。我是 Swift 编程的新手,因此我收到的错误没有任何意义。

let container = CKContainer.default()
let publicDB = container.publicCloudDatabase    

let query1 = CKQuery(recordType: "movieArray", predicate: predicate2)
    publicDB.perform(query1, inZoneWith: nil) {(results:[CKRecord]?, error:Error?) in
        if error != nil {
            DispatchQueue.main.async {
                print("Cloud Query Error - Fetch Establishments: \(String(describing: error))")
            }
            return
        }
        for record in results! {
            DispatchQueue.main.async {
                let asset = record["myImageKey"] as? CKAsset
                let data = NSData(contentsOf: (asset?.fileURL)!)
                let image = UIImage(data: data! as Data)
                print("Test")
                self.detailImage.image = image
            }
            self.movieCast.text = record.object(forKey: "Actors") as? String
            self.detailDescriptionLabel.text = record.object(forKey: "Description") as? String
            let youLink = record.object(forKey: "youtubeTag") as! String
            self.loadYoutube(videoID: youLink)
        }
    }

我得到的错误是在这一行:

let data = NSData(contentsOf: (asset?.fileURL)!)

它说:

Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1020527c4

我试图从主线程中删除它,但我收到了同样的错误。

最佳答案

也许问题是 CKAsset 记录为零,但您强制有一个 fileURL 值。

尝试使用此代码段获取 CloudKit 图像

if let asset = record["myImageKey"] as? CKAsset,
   let data = try? Data(contentsOf: (asset.fileURL)),
   let image = UIImage(data: data)
{
    self.detailImage.image = image
}

关于swift - 使用 Cloudkit Assets 作为 UIimage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799951/

相关文章:

swift - UIView 的动画方法没有出现

swift - 登录 Firebase 后如何获取用户的 facebook 用户名(和其他用户信息)?

ios - 当第一个 View Controller 在 iOS 中隐藏其导航栏时,向后滑动会导致导航栏立即隐藏(不平滑)

objective-c - 使用 CloudKit 和 Core Data 进行本地存储的应用程序。如何处理订阅通知的顺序

swift - CKSubscription 返回错误,即在使用 FiresOnce 时查询必须至少具有一种触发模式

ios - CKQuery操作错误: This operation has been rate limited

swift - 没有音频的视频会使 AVMutableComposition() 上的应用程序崩溃

ios - CloudKit,我的授权不工作

ios - 在 CloudKit 谓词中使用 CONTAINS 或 ANY 以及比较数组

swift - 当用户输入日期/时间字段查询时,我可以对 CKRecord 进行排序吗?