Как декодировать JSON с помощью динамического ключа из FirebaseDatabase - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь использовать JSONDecoder с FirebaseDatabase. В Интернете есть несколько примеров, но я не смог найти ни одного с динамическими объектными ключами, подобными тем, которые возвращаются в ответе, который я получаю. Есть ли лучший способ сделать это?

JSON Пример:

{
"-LUOhAM5W42t9YxqFkUQ" =     {
    author =         {
        name = testName;
    };
    commentCount = 0;
    detail = "";
    id = "-LUOhAM5W42t9YxqFkUQ";
    likeCount = 0;
};
"-LUOhNU4wfwTlZQkrGFu" =     {
    author =         {
        name = otherName;
    };
    commentCount = 0;
    detail = "";
    id = "-LUOhNU4wfwTlZQkrGFu";
    likeCount = 0;
};

Моя структура выглядит следующим образом (сначала я просто пытаюсь успешно декодировать):

struct Post: Decodable {
    var id: String?
    var title: String?
}

И мой код в моем контроллере выглядит следующим образом:

func getPosts() {
    Database.database().reference().child("posts").observeSingleEvent(of: .value, with: { (snapshot) in
        guard let value = snapshot.value else { return }
        print("VALUE: \(value)")
        do {
            let person = try FirebaseDecoder().decode(Post.self, from: value)
            print(person)
        } catch let error {
            print(error)
        }
    })
}

Я знаю, что мог бы пройтись по каждому объекту, декодировать и затем добавить их в массив, но я ищу наиболее эффективный подходи мне очень нравится JSONDecoder. Опять же, загвоздка в том, что Firebase помещает ключ объекта в начале каждого объекта, что кажется странным. Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...