我正在移植一个android应用,并在android中使用firebase,因此可以通过这种方式保存格式。 如何在Swift上执行此操作?我读到我只能存储这种数据
如何在原子操作中存储obj? 将用户对象的每个字段存储在单独的操作中是正确的吗?
Android上的Firebase
mDatabaseReferences.child("users").child(user.getUuid()).setValue(user)
答案 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