Swift Firestore не может получить данные на объект - PullRequest
0 голосов
/ 04 марта 2019

Здравствуйте, я пытаюсь разобрать массив строк в дао.Для этого я создал это:

   func getUsersAbos(){
let userid = Auth.auth().currentUser?.uid
let docRef = db.collection("Users").document(userid!)

docRef.getDocument { (document, error) in
if let city = document.flatMap({
$0.data().flatMap({ (data) in
    return UserBlogObject(channelAbos: data)
})
}) {
print("City: \(city)")
} else {
print("Document does not exist")
}
}
}

и вот мой Dao:

импорт класса Foundation UserBlogObject {var channelAbos = Any

init(channelAbos: [String]) {
    self.channelAbos = channelAbos


}

init(){

}

}

я получаю сообщение об ошибке в этой строке:

        return UserBlogObject(channelAbos: data)

Невозможно преобразовать значение типа '[String: Any]' в ожидаемый тип аргумента '[String]'

обратите внимание, что я хочу скачать только массив внутри документа, а не весь документ.

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете сделать что-то вроде этого.Я не думаю, что есть необходимость слишком усложнять функцию с flatMap(), но вы можете сделать это, если хотите.Вот пример кода того, как вы можете создать свой метод.

func getUsersAbos() {
    guard let userID = Auth.auth().currentUser?.uid else { return }
    let docRef = db.collection("Users").document(userID)
    docRef.getDocument { (document, error) in
        if error != nil { return }
        guard let data = document?.data() else { return }
        guard let channelAbos = data["channelAbos"] as? [String] else { return }
        let userBlogObject = UserBlogObject.init(channelAbos: channelAbos) // This is the created object. Handle it.
    }
}

И ваш класс:

class UserBlogObject {
    var channelAbos : [String]

    init(channelAbos: [String]) {
        self.channelAbos = channelAbos
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...