Ошибка добавления документов Firestore в Pickerview - PullRequest
0 голосов
/ 27 мая 2019

Я недавно сильно изменился в своем приложении для iOS, и теперь я застрял.

Я пытаюсь вставить данные из Firestore, которые выглядят так:

firebase

Итак, как вы видите, у меня здесь 6 разных имен.

А вот код для вставки в pickerView.

 func getPerson()
{
    let authentication = Auth.auth().currentUser?.uid
    db.collection("users").document(authentication!).collection("person").getDocuments { (QuerySnapshot, err) in

        //If error is not equal to nil
        if err != nil
        {
            print("Error getting documents: \(String(describing: err))");
        }
            //Succeded
        else
        {
            //For-loop
            for _ in QuerySnapshot!.documents
            {
                //Cleaning the array for the new values
                self.personArray.removeAll()

                let document = QuerySnapshot!.documents
                let data = document.data() //HERE IS THE ERROR

                data.forEach { (item) in
                    if let person1Data = data["name"] as? String
                    {
                        self.personArray.append(person1Data)
                        print(self.personArray)
                    }
                }
            }
            self.pickerView.reloadAllComponents()

        }
    }
}

Я получаю сообщение об ошибке:

Значение типа '[QueryDocumentSnapshot]' не имеет члена 'data'

Раньше было QuerySnapshot!.documents.first но он больше не работает, когда я изменил данные Firestore.


Edit:

Итак. вывод теперь:

["Joche"] ["Joche", "Joche"] ["Putte"] ["Putte", "Putte"] ["Ребекка"] ["Ребекка", "Ребекка"] ["Фредрик"] ["Фредрик", "Фредрик"] ["Анна"] ["Анна", "Анна"] ["Виккан"] ["Виккан", "Виккан"]

, что означает, что он добавляет все, кроме х3. Как решить эту проблему?

1 Ответ

1 голос
/ 27 мая 2019

data - это метод экземпляра одного QueryDocumentSnapshot, а не массива. Вам нужно

self.personArray.removeAll()
for elem in querySnapshot!.documents {
    let data = elem.document.data()
    data.forEach {
        if let person1Data = $0["name"] as? String {
            self.personArray.append(person1Data)
            print(self.personArray)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...