为什么我的应用程序在使用 cloudkit 时崩溃了?

Why did my app crash when using cloudkit?

当我尝试使用 Swift 从 iCloud 加载数据时,应用程序崩溃并出现此错误。这是为什么?我好像找不到错误?

代码:

func LoadEvents() {

        let predicate:NSPredicate = NSPredicate(value: true)
        let query:CKQuery = CKQuery(recordType: "Data", predicate: predicate)
        query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

        if let database = self.publicDatabase {

            database.performQuery(query, inZoneWithID: nil, completionHandler: { (records:[AnyObject]!, error:NSError!) in

                if error != nil {
                    self.alert("Error: \(error.localizedDescription)", Message: "Make sure iCloud is turned on and you are connected to the internet")   
                } else {
                    dispatch_async(dispatch_get_main_queue()) {
                        self.EventsArray.removeAll(keepCapacity: false)

                        for record in records {
                            let usernameRecord:CKRecord = record as CKRecord     
                            self.EventsArray.insert(usernameRecord.objectForKey("Events") as String, atIndex: 0)
                            println("1")
                        }

                        //update data
                        self.collectionView.reloadData()
                    }
                }
            })        
        }
}

您正在阅读的记录可能没有名为“事件”的字段。因此 objectForKey 将 return nil 无法转换为字符串。您可以使用 as? String 或使用:

来解决此问题
if let event = usernameRecord.objectForKey("Events") as? String{
    self.EventsArray.insert(event, atIndex: 0)
}