如何使用 Swift 在 Firebase 中存储自定义对象?

a.s*_*rto 1 firebase swift firebase-realtime-database

我正在移植一个 Android 应用程序并在 Android 中使用 firebase,可以通过这种方式保存格式。我怎样才能在斯威夫特上做到这一点?我读到我只能存储这种数据

  • NS字符串
  • NS编号
  • NS词典
  • NSArray

如何以原子操作存储 obj?在单独的操作中存储用户对象的每个字段是否正确?

Android 上的 Firebase

mDatabaseReferences.child("users").child(user.getUuid()).setValue(user)

Run Code Online (Sandbox Code Playgroud)

小智 5

我通常将对象存储为 firebase 上的字典。如果在我的应用程序中,我有一个 User 对象,并且它具有如下属性:

class User {
var username = ""
var email = ""
var userID = ""
var consecutiveDaysLoggedOn = Int()
}



let newUser = User()
   newUser.username = "LeviYoder"
   newUser.email = "LeviYoder@LeviYoder.com"
   newUser.userID = "L735F802847A-"
   newUser.consecutiveDaysLoggedOn = 1
Run Code Online (Sandbox Code Playgroud)

我只需将这些属性存储为字典,并将该字典写入我的 firebase 数据库:

let userInfoDictionary = ["username" : newUser.username
                           "email" : newUser.email
                           "userID" : newUser.userID
              "consecutiveDaysLoggedOn" : newUser.consecutiveDaysLoggedOn]

let ref = Database.database().reference.child("UserInfo").child("SpecificUserFolder")
//      ref.setValue(userInfoDictionary) { (error:Error?, ref:DatabaseReference) in

ref.setValue(userInfoDictionary, withCompletionBlock: { err, ref in
    if let error = err {
        print("userInfoDictionary was not saved: \(error.localizedDescription)")
    } else {
        print("userInfoDictionary saved successfully!")
    }
}
Run Code Online (Sandbox Code Playgroud)

这能解决你的问题吗?

  • 很好的答案。如果是我,我可能会将大部分代码包含在实际的用户类中。因此,当需要将其写出时,您只需 *ref.setValue( someUser.getPropertyDict() )* 并且 getPropertyDict 将捆绑所有类属性并返回要写出到 Firebase 的字典。同样,读取用户快照,您可以将其传递给类来初始化它 *var someUser = UserClass(initWith: snapshot* (2认同)