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

时间:2019-04-18 16:55:37

标签: swift firebase firebase-realtime-database

我正在移植一个android应用,并在android中使用firebase,因此可以通过这种方式保存格式。 如何在Swift上执行此操作?我读到我只能存储这种数据

  • NSString
  • NSNumber
  • NSDictionary
  • NSArray

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

Android上的Firebase

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

3 个答案:

答案 0 :(得分:2)

我通常将对象作为字典存储在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

我只是将这些属性存储为字典,然后将该字典写入我的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!")
    }
}

这能解决您的问题吗?

答案 1 :(得分:0)

使用

self.ref.child("users").child(user.uid).setValue(["username": username])

答案 2 :(得分:0)

我带有一个小扩展名,用于在FireStore的可读词典中转换标准的SwiftObject:

extension Encodable {
    var toDictionnary: [String : Any]? {
        guard let data =  try? JSONEncoder().encode(self) else {
            return nil
        }
        return try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any]
    }
}

例如,在我的模型中:

struct Order: Encodable {
    let symbol: String
    let shares: Int
    let price: Float
    let userID: String
}

通过以下行调用:

let dictionnary = order.toDictionnary

这是生成的字典

4 elements
  ▿ 0 : 2 elements
    - key : "symbol"
    - value : FP.PAR
  ▿ 1 : 2 elements
    - key : "shares"
    - value : 10
  ▿ 2 : 2 elements
    - key : "userID"
    - value : fake_id
  ▿ 3 : 2 elements
    - key : "price"
    - value : 100