Я пытаюсь запросить базу данных Firebase, пока пользователь печатает, но я получаю эту ошибку - PullRequest
0 голосов
/ 20 апреля 2019

Итак, я нашел этот код для запроса вашей базы данных, пока пользователь все еще печатал, но код устарел, и я обновлял его, но есть ошибка, которую я не знаю, как исправить.

func findFriends(text: String) -> Void {

    let ref = Database.database().reference()
    ref.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in

        let user = User()
        let userArray = [User]()

            for u in snapshot.children{
                user.name = u.value!["name"] as? String
        }
    })

В последней строке я получаю сообщение об ошибке:

Значение типа 'Any' не имеет значения 'member'

1 Ответ

1 голос
/ 20 апреля 2019

Элементы в snapshot.children имеют тип Any, который не имеет свойства value. Чтобы получить свойство value, вам нужно привести u к DataSnapshot:

for userSnapshot in snapshot.children{
    let userSnapshot = userSnapshot as! DataSnapshot
    guard let dictionary = userSnapshot.value as? [String: Any] else { return }
    user.name = dictionary["name"] as? String
}

В качестве альтернативы, вы помещаете приведение в цикл:

for userSnapshot in in snapshot.children.allObjects as? [DataSnapshot] ?? [] {
    guard let dictionary = userSnapshot.value as? [String: Any] else { return }
    user.name = dictionary["name"] as? String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...