Извлечь строковое значение из моментальной копии Firebase - PullRequest
0 голосов
/ 07 апреля 2019

Я новый разработчик Swift.Я использую Swift 4.2 и Xcode 10.1.

Я пытаюсь создать массив строк из моментальной копии Firebase.Я могу сделать это, настроив структурную модель и используя инициализатор, но когда я хочу сделать это непосредственно в коде без отдельной структуры, это не работает.Вот мой код:

    // Get the likers
    dbRef.child("likers").observeSingleEvent(of: .value) { snapshot in

        // Declare an array to hold the Likers
        var retrievedLikers = [String]()

        // Loop through the retrieved likers and put into the array
        for child in snapshot.children {
            let snap = child as! DataSnapshot
            let dict = snap.value as! [String:Any]
            let likerId = dict["userId"] as? String ?? ""
            print (likerId)
            retrievedLikers.insert(likerId, at: 0)
        }
            likers = retrievedLikers
        }

Моя модель данных Firebase выглядит следующим образом:

enter image description here

Я пробовал несколько методов.Код выше является самым последним, основанным на другом предложении SO.

Проблема в том, что я не могу создать словарь с snap.value.Snap имеет правильные данные.Я получаю сообщение об ошибке «Невозможно указать значение типа« __NSCFString »для« NSDictionary ». Но снимок отображается в виде словаря. Вот снимок экрана:

enter image description here

Любая помощь будет признательна. Я пытался решить эту проблему в течение 3 часов.

1 Ответ

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

Вы можете попробовать

let res = snapshot.value as! [String:String] 
retrievedLikers = Array(res.values)

Здесь сбой snap.value - это String, который не может быть приведен к [String:Any]

let dict = snap.value as! [String:Any]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...