ios - docs - firebase swift offline




Swift 3 Firebase-(setValue:) Objekt des Typs_SwiftValue kann nicht am Inhalt gespeichert werden (2)

Versuchen Sie zu ändern: -

func toAnyObject() -> Any {
  return ["content":content, "addedByUser":addedByUser] as Any
 }

Zu

func toAnyObject() -> [AnyHashable:Any] {
  return ["content":content, "addedByUser":addedByUser] as [AnyHashable:Any]
 }

Ich habe diese Frage mehrmals gestellt, aber ich kann mir nicht vorstellen, wie ich diese Antworten verwende, um das Problem in meinem Code zu lösen. Dies ist der aktuelle Code, den ich verwende:

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
}

Ich nehme an, dass der Fehler in der Konsole die Zeile bedeutet, in der ich "Fehler hier" kommentiert habe.

Die Methode toAnyObject ist unten:

func toAnyObject() -> Any {
    return ["content":content, "addedByUser":addedByUser] as Any
}

Der volle Konsolenfehler ist unten:

Beenden der App aufgrund der nicht abgefangenen Ausnahme 'InvalidFirebaseData', Grund: '(setValue :) Objekt des Typs _SwiftValue kann nicht am Inhalt gespeichert werden. Kann nur Objekte vom Typ NSNumber, NSString, NSDictionary und NSArray speichern. '


Mit der Version 3.12.0 ich das Objekt des Typs _SwiftValue nicht gespeichert , obwohl ich sichergestellt habe, dass ich eine NSString und nicht eine schnelle Zeichenfolge gesendet habe. Was ich falsch gemacht habe, war das Format des Completion Blocks. Ich habe das geändert:

ref.child("data").setValue("str")  {
    print("done")
}

zu diesem:

ref.child("data").setValue("str")  { err, ref in
    print("done")
}

Muss ein Fehler sein und ich erwarte eine bessere Fehlermeldung in einer zukünftigen Firebase-Version.





swift3