So verwende ich Firebase, um JSON zu ziehen und es in ein Array von GasUse
Objekte zu verwandeln.Schließung unerwartet erfordert werfen (Firebase)
Dies ist die GasUse
Klasse. Sein Initialisierer akzeptiert eine Dictionary
und gibt einen Fehler aus, wenn ein Schlüssel: Wert-Paar fehlt.
class GasUse {
let distance: Double
let comment: String?
let addedByUser: String
let creationDate: Date
init(from jsonDict: [String:Any]) throws {
guard let distance = jsonDict["distance"] as? Double else { throw SerializationError.missing }
let comment = jsonDict["comment"] as? String
guard let addedByUser = jsonDict["addedByUser"] as? String else { throw SerializationError.missing }
guard let creationDateString = jsonDict["creationDate"] as? String else { throw SerializationError.missing }
self.distance = distance
self.comment = comment
self.addedByUser = addedByUser
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss +zzzz"
self.creationDate = dateFormatter.date(from: creationDateString)!
}
}
ich dann diesen Code verwenden zu schaffen scheint die GasUse
versuchen
Database.database().reference().observeSingleEvent(of: .value, with: { //Invalid conversion from throwing function of type '(_) throws ->()' to non-throwing function type '(DataSnapshot) -> Void'(rootSnapshot) in
let childSnapshots = rootSnapshot.children.allObjects as! [DataSnapshot]
let childValues = childSnapshots.map { $0.value as! [String: Any] }
for value in childValues {
do { let gasUse = try GasUse(from: value) }
catch SerializationError.missing { self.present(self.makeAlert("Error", "Missing value in json"), animated: true, completion: nil) }
catch SerializationError.invalid { self.present(self.makeAlert("Error", "Invalid value in json"), animated: true, completion: nil) }
}
})
Aber die Funktion ein bestimmtes Format für die Schließung zu verlangen, dass ich denke, ich aber bin nach.
Ungültige Konvertierung von Funktion vom Typ werfen '(_) wirft ->()' zu nicht-Wurf Funktionstyp '(DataSnapshot) -> Void' (rootSnapshot) in
Was ist falsch hier?