update query guardar example datos datasnapshot consultas child ios swift firebase firebase-database swift3

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?]