将 Cloudkit 资产用作 UIimage
Posted
技术标签:
【中文标题】将 Cloudkit 资产用作 UIimage【英文标题】:Using Cloudkit Assets as a 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
我试图从主线程中删除它,但我收到了同样的错误。
【问题讨论】:
【参考方案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 值。谢谢!以上是关于将 Cloudkit 资产用作 UIimage的主要内容,如果未能解决你的问题,请参考以下文章
CloudKit fetchRecordWithID 错误:“获取资产失败”
swift Swift - CloudKit - 使用资产和位置字段