Swift Firestore无法将数据获取到对象

时间:2019-03-04 20:33:06

标签: swift google-cloud-firestore

您好,我尝试将字符串数组解析为dao。为此,我创建了这个:

   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")
}
}
}

这是我的道:

导入基金会  类UserBlogObject {     var channelAbos =任何

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


}

init(){

}

}

我在此行出现错误:

        return UserBlogObject(channelAbos: data)
  

无法将类型[[String:任何]]的值转换为预期的参数类型'[String]'

请注意,我只想下载文档中的一个数组,而不是整个文档。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。我认为不需要使用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
    }
}