Как сохранить сложный объект в Firebase?

#swift #firebase

#swift #firebase

Вопрос:

У меня есть 2 класса. Класс User, который содержит массив объектов класса Item. Я хочу сохранить объект пользователя в Firebase. Что мне нужно для этого сделать?

 class User: NSObject {
    var name: String
    var items: [Item]
    init(dictionary: [String: Any]) {
        self.name = dictionary["name"] as? String ?? ""
    }
}

class Item{
    var name: String
    init(name: String) {
        self.name = name
    }
}

var user = User(dictionary: [:])
user.name = "Tom"

var item = Item(name: "item1")
user.items.append(item)

let uid = Auth.auth().currentUser?.uid
Database.database().reference().child("users").child(uid).setValue(user)
  

Ответ №1:

Сохраните их как объект firebase.

 class User: NSObject {
    var name: String
    var items: [Item]
    init(dictionary: [String: Any]) {
        self.name = dictionary["name"] as? String ?? ""
    }
    var json: [String: Any] {
        return ["name": name, "items": items.map { $0.json }]
    }
}

class Item{
    var name: String
    init(name: String) {
        self.name = name
    }
    var json: [String: Any] { 
        return ["name": name]
    }
}

Database.database().reference().child("users").child(uid).setValue(user.json)