When I try to load data from iCloud using Swift, the app crashes with this error. Why is that? I can't seem to find the bug?
Code:
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()
}
}
})
}
}
The record that you are reading probably does not have a field named Events. So the objectForKey will return nil which cannot be casted to string. You could solve this by using as? String
or use:
if let event = usernameRecord.objectForKey("Events") as? String{
self.EventsArray.insert(event, atIndex: 0)
}