ios - query - push firebase android
Swift 3 Firebase-(setValue:) No se puede almacenar el objeto de tipo_SwiftValue en el contenido (3)
Intenta cambiar:
func toAnyObject() -> Any {
return ["content":content, "addedByUser":addedByUser] as Any
}
A
func toAnyObject() -> [AnyHashable:Any] {
return ["content":content, "addedByUser":addedByUser] as [AnyHashable:Any]
}
He visto esta pregunta varias veces, pero parece que no puedo entender cómo usar esas respuestas para resolver el problema en mi código. Este es el código actual que estoy usando:
if let postContent = postAlert.textFields?.first?.text {
let post = Post(content: postContent, addedByUser: "Max Kortge")
let postRef = self.dbRef.child(postContent.lowercased())
postRef.setValue(post.toAnyObject()) //error here
}
Supongo que el error en la consola significa la línea donde he comentado ''error aquí''.
El método toAnyObject está a continuación:
func toAnyObject() -> Any {
return ["content":content, "addedByUser":addedByUser] as Any
}
El error de la consola completa está a continuación:
Finalización de la aplicación debido a la excepción no detectada ''InvalidFirebaseData'', reason: ''(setValue :) No se puede almacenar el objeto de tipo _SwiftValue en el contenido. Solo puede almacenar objetos de tipo NSNumber, NSString, NSDictionary y NSArray. ''
Con la versión 3.12.0
obtuve el 3.12.0
No se puede almacenar el objeto de tipo _SwiftValue aunque me aseguré de enviar una cadena NSString y no una cadena rápida. Lo que hice mal fue el formato del bloque de finalización. Cambié esto:
ref.child("data").setValue("str") {
print("done")
}
a esto:
ref.child("data").setValue("str") { err, ref in
print("done")
}
Debe ser un error y espero un mejor mensaje de error en una futura versión de Firebase.
asegúrese de que ''publicación'' en su código sea [String: String] en lugar de [String: String?]