Как получить массив объектов из Firestore в Swift? - PullRequest
1 голос
/ 27 марта 2019

В Swift, чтобы получить массив из Firestore, я использую:

currentDocument.getDocument { (document, error) in
  if let document = document, document.exists {
    let people = document.data()!["people"]
    print(people!)
  } else {
    print("Document does not exist")
  }
}

И я получаю данные, которые выглядят так:


(
  {
    name = "Bob";
    age = 24;
  }
)

Однако, если бы я мог извлечь имя в одиночку, обычно я делал бы print(document.data()!["people"][0]["name"]).

Но я получаю ответ Value of type 'Any' has no subscripts

Как получить доступ к ключу имени внутри этого объекта в массиве people?

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Значение, возвращаемое document.data()!["people"], относится к типу Any, и вы не можете получить доступ к [0] для Any.

Сначала вам нужно привести результат в массив, а затем получить первый элемент. Хотя я не эксперт по Swift, должно быть что-то вроде этого:

let people = document.data()!["people"]! as [Any]
print(people[0])
0 голосов
/ 06 апреля 2019

Лучший способ написать ответ @Frank van Puffelen:

currentDocument.getDocument { document, error in
  guard error == nil, let document = document, document.exists, let people = document.get("people") as? [Any] else { return }
    print(people)
  }
}

Вторая строка может быть немного длинной, но она защищает от всех возможных ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...