Недавно я многое изменил в своем приложении для iOS, и теперь я застрял.
Я пытаюсь вставить данные из Firestore, которые выглядят так:
Итак, как видите, у меня здесь 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()
}
}
}
Я получаю сообщение об ошибке:
Value of type '[QueryDocumentSnapshot]' has no member 'data'
Раньше было QuerySnapshot!.documents.first
но это больше не работает, когда я изменил данные Firestore.
Редактировать:
Так. вывод сейчас:
["Joche"] ["Joche", "Joche"] ["Putte"] ["Putte", "Putte"] ["Rebecca"] ["Rebecca", "Rebecca"] ["Fredrik"] ["Fredrik", "Fredrik"] ["Anna"] ["Anna", "Anna"] ["Vickan"] ["Vickan", "Vickan"]
что означает, что он добавляет все, кроме x3. Как решить эту проблему?
@Sh_Khan Что ты имеешь в виду?
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)
}
}
}
Я добавил строку print(self.personArray)
, и теперь вывод: ["Joche"] ["Joche", "Joche"] ["Putte"] ["Putte", "Putte"] ["Rebecca"] ["Rebecca", "Rebecca"] ["Fredrik"] ["Fredrik", "Fredrik"] ["Anna"] ["Anna", "Anna"] ["Vickan"] ["Vickan", "Vickan"]
Это означает, что он печатает все x3. А в pickerView ничего не отображается, знаете почему?
установить делегата выбора и источник данных
Они есть в методе viewDidLoad
Хм, есть еще советы?
Я создал с тобой чат. Вы не против заглянуть туда?
начинайте имена переменных с маленькой буквы