У меня есть коллекция пользователей в firebase и структура пользователя. Мне нужно написать функцию, которая принимает идентификатор пользователя и возвращает соответствующий объект пользователя:
struct AppUser: Codable {
var id: String
var displayName: String
var photoURL: String
var points: Int?
var knownLanguageCodes: Set<String>?
}
Это моя функция, которую я имею до сих пор.
func getUser(id: String) -> AppUser? {
let db = Firestore.firestore()
let userRef = db.collection("users").document(id)
userRef.getDocument { (document, error) in
if let document = document, document.exists {
let userID = document.data()?["id"] as! String
let userDisplayName = document.data()?["displayName"] as! String
let userPhotoURL = document.data()?["photoURL"] as! String
let userPoints = document.data()?["points"] as! Int?
let userKnownLanguageCodes = document.data()?["knownLanguageCode"] as! Set<String>?
let user = AppUser(id: userID,
displayName: userDisplayName,
photoURL: userPhotoURL,
points: userPoints,
knownLanguageCodes: userKnownLanguageCodes)
return user
} else {
print("Error getting user")
return nil
}
}
}
Оба из Приведенные выше операторы return дают ошибку: Неожиданное возвращаемое значение в void функции
Я посмотрел код здесь https://cloud.google.com/firestore/docs/query-data/get-data под заголовком «Пользовательские объекты», и это не так кажется, работает на меня. Я получаю ошибку: значение типа 'NSObject' не имеет члена 'data'. Это производится в строке 6 кода в ссылке.