Swift Cloudkit数据检索:为什么致命错误:在读取数据库记录时,在展开可选值时意外发现nil

Swift Cloudkit数据检索:为什么致命错误:在读取数据库记录时,在展开可选值时意外发现nil,swift,cloudkit,Swift,Cloudkit,我正在使用swift和cloudkit 我正在从cloudkit服务器获取数据,并尝试在tableview中显示它。将CKrecord从数组读取到表单元格时出错: 致命错误:在展开可选值时意外发现nil 错误行是:let name=ckRecord.object(forKey:“code”)as!字符串 请帮助-以下是我的代码: var Saveddata: [CKRecord] = [] @IBAction func getAlbum(_ sender: AnyObject) {

我正在使用swift和cloudkit

我正在从cloudkit服务器获取数据,并尝试在tableview中显示它。将CKrecord从数组读取到表单元格时出错:

致命错误:在展开可选值时意外发现nil

错误行是:
let name=ckRecord.object(forKey:“code”)as!字符串

请帮助-以下是我的代码:

var Saveddata: [CKRecord] = []

@IBAction func getAlbum(_ sender: AnyObject) {            
   let Container = CKContainer.default()
   let database = Container.publicCloudDatabase
   let predicate = NSPredicate(value: true)
   let query = CKQuery(recordType: "Photos", predicate: predicate)       
   database.perform(query, inZoneWith: nil) {  //A
       records, error in
       if error != nil {  //B
          print(error?.localizedDescription ?? 10)
       }  // B
       else {  //C
          count = (records?.count)!
          print("countttttt \(count)")
          for myrecord in records! {  //D
             self.Saveddata.append(myrecord as CKRecord)                    
          }  //D
          let Queue = OperationQueue.main
          Queue.addOperation() { //E
             self.tableview.reloadData()
          }  //E
        }  //C
      }  //A        
    } //G 
  }

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let ckRecord = Saveddata[indexPath.row]

    //ERROR appears when executing below line////////
    let name = ckRecord.object(forKey: "code") as! String
    cell.textLabel!.text  = name
    return cell
 }

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.Saveddata.count            
 }

一个或多个记录没有“代码”字段的数据。您的假设不正确。但是我所有返回值的记录都正确打印了savedata数组,因此所有数据都是可选绑定的,以检查您使用的
CKRecord
是否具有
code
的值,如果您的记录实际上,
code
有一个值,这样你就不会崩溃。我用另一个字段做了这件事,它是一个图像,我遇到了同样的问题,所以我试着让它变得简单,并只在现在检索这段代码-下面是我的第一次尝试,我使用了条件绑定,错误是相同的let image=ckRecord.object(forKey:“Photo”)as!CKAsset,如果让CKAsset=image as?CKAsset{//代码的其余部分