2016-12-09 7 views
0

Hier einige Firebase verwandte Code aus einer iOS-App von mir genommen:Firebase Syntax mit Swift 3.0

var dataRef = firebaseRootReference?.child(byAppendingPath: "MyList") 
dataRef = dataRef?.child(byAppendingPath: key) 

dataRef.observe(.value, with: { snapshot in 
    ....... 
    }, withCancel: { error in 
     print(error.description) 
}) 

Der obige Code funktionierte gut. Aber ich gerade ein Upgrade meines Projektes Swift 3.0 und ich jetzt diese Fehlermeldung:

Wert kann nicht vom Typ konvertieren ‚(_) ->()‘ zu erwarteten Argumenttyp ‚((Error) -> Void)!

Im Internet surfen kann ich nur Beispiele für ähnlichen Code ohne Fehlerbehandlung Teil finden. Wenn ich nur einen Teil wie unten auskommentiere, werde ich den Fehler los, aber ich bezweifle, dass dies die richtige Lösung ist.

var dataRef = firebaseRootReference?.child(byAppendingPath: "MyList") 
dataRef = dataRef?.child(byAppendingPath: key) 

dataRef?.observe(.value, with: { snapshot in 
    ....... 
    }/*, withCancel: { error in 
     print(error.description) 
}*/) 

Was ist der richtige Weg, um den obigen Code in Swift 3.0 zu schreiben?

+0

'child (byAppendingPath:" MyList ")' wurde in Swift 3 veraltet, ersetzen durch 'child (" MyList ")' – bibscy

Antwort

2

Sie erhalten diesen Fehler wegen der Zeile print(error.description). Error Protokoll hat keine Eigenschaft description, änderte es einfach mit localizedDescription wird Ihr Problem lösen.

print(error.localizedDescription) 

Der gesamte Code wird wie folgt sein.

dataRef?.observe(.value, with: { snapshot in 

    //get data from snapshot object 
}, withCancel: { error in 

    print(error.localizedDescription) 
})