получение списка пользователей из базы данных firebase swift 5 - PullRequest
0 голосов
/ 07 мая 2020

Я хочу получить список пользователей из firebase, я следую руководству, в котором не используется swift 5, но я пишу свой код на быстром 5. Я новичок в разработке swift и iOS Как я могу преобразовать следующий код для быстрого 5

У меня есть пользователи в базе данных firebase, которые ~ я пытаюсь получить, и у каждого пользователя есть email и name

User

class User: NSObject {
    var name: String?
    var email: String?
}

Попытка преобразовать приведенный ниже код в swift 5

FIRDatabase.database().reference().child(“users”).observeEventType(.ChildAdded, withBlock: { (snapshot) in
   If let dictionary = snapshot.value as? [String: AnyObject] {

   }
}, withCancelBlock: nil)

Это то, что я сделал, и я не думаю, что получаю данные правильно

func fetchUsers() {

        Database.database().reference().child("users").observe(.childAdded) { (snapshot) in

            if let dictionary  = snapshot.value as? [String: AnyObject] {
                let user = User()
                user.setValuesForKeys(dictionary) // this is where my error is

            }
        }
    }

Ошибка

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<FBCHSRM.User 0x600002701050> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key email.'

Данные в словаре выглядят так

enter image description here

заранее спасибо R

1 Ответ

1 голос
/ 07 мая 2020

вы неправильно устанавливаете значения, вы должны что-то изменить. сначала добавьте структуру пользователя

init(email: String, username: String) {
        self.email= email
        self.name = name

    }

, затем создайте массив пользователей для хранения данных как:

var users:[User] = []

в fetchUser fun c

 if let dictionary  = snapshot.value as? [String: AnyObject] {
        for dic in dictionary{
            let emailFromFB = dic["email"] as? String ?? "" 
            let username = dic["username"] as? String ?? "" /
            var u: User(email: email, name:name)
            users.append(u)

        }
    }

    print(users)
...