【问题标题】:Using Cloudkit Assets as a UIimage将 Cloudkit 资产用作 UIimage
【发布时间】:2017-12-13 18:33:54
【问题描述】:

我将图像作为资产保存在 CloudKit 中。每条记录还有其他属性。我可以收集记录并使用其他属性,但我无法在我的 ImageView 中使用该资产。我是 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

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

【问题讨论】:

    标签: swift cloudkit ckquery ckasset


    【解决方案1】:

    也许问题在于CKAsset 记录为零,但您强制拥有fileURL 值。

    尝试用这个sn-p获取CloudKit镜像

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

    【讨论】:

    • 你完全正确。我的 Cloudkit 数据有一个错误,它正在加载一个 nil 值。谢谢!
    猜你喜欢
    • 2014-08-19
    • 2017-12-12
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2013-11-24
    • 2022-06-27
    • 1970-01-01
    相关资源
    最近更新 更多