2017-12-13 10 views
1

私はCloudKitにアセットとして保存された画像を持っています。各レコードには他の属性もあります。レコードを集めて他の属性を使用することはできますが、ImageViewでそのアセットを使用することはできません。私はSwiftのプログラミングには新しいので、私が受け取るエラーは意味をなさない。CloudkitアセットをUIimageとして使用

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 

私はメインスレッドからそれを削除しようとしましたが、私は同じエラーを受け取ります。

答えて

2

CKAssetのレコードはゼロですが、の場合、にはfileURLという値が設定されている可能性があります。

はあなたが絶対的に正しかったこのスニペット

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

でCloudKit画像を得るようにしてください。私はCloudkitデータにエラーがあり、ゼロ値をロードしていました。ありがとう! –

関連する問題