ios - 使用 IOS-Swift 读取 firebase 实时数据库子节点

标签 ios swift firebase-realtime-database

我在 firebase 实时数据库中有以下结构。

Collection

我可以读取名称、地址、cp、图像等信息。但是当我尝试访问“concesiones”时,我总是收到 nil。

我读取信息的代码是这样的。

guard let uid = Auth.auth().currentUser?.uid else {return}
let ref = Database.database().reference().child("users").child(uid)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
    if let dictionary = snapshot.value as? [String: AnyObject] {
        user.name = dictionary["name"] as? String
        user.email = dictionary["email"] as? String
        user.phone = dictionary["phone"] as? String
        user.address = dictionary["address"] as? String
        user.district = dictionary["district"] as? String
        user.city = dictionary["city"] as? String
        user.state = dictionary["state"] as? String
        user.country = dictionary["country"] as? String
        user.cp = dictionary["cp"] as? String
        user.imageProfile = dictionary["imageProfile"] as? String
        user.concesiones = dictionary["concesiones"] as? [String]
    }
    print(user.name)
    print(user.concesiones)
    self.setupViewInfo(user: user)
}, withCancel: nil)

最佳答案

concesiones 下,您有一个混合字符串(索引 0 和 2)和数字(索引 1)的数组。由于您将其软转换为仅包含字符串的数组,因此转换结果为 null

对于当前的数据结构,你能做的最好的事情是:

user.concesiones = dictionary["concesiones"] as? [AnyObject]

但您可能还想考虑在 concesiones 下仅存储一种类型的数据,以简化处理。

关于ios - 使用 IOS-Swift 读取 firebase 实时数据库子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229233/

相关文章:

iOS 11 UITableView performBatchUpdates 完成关闭未被调用

arrays - 使用 firebase 在 swift 中实现对提要帖子的评论

iphone - iOS 崩溃并出现 EXC_BAD_ACCESS(code=1)

c++ - 允许 C++ 抽象类使用 Objective-C 委托(delegate)

ios - 实现 CalendarView 应用程序 iOS SDK 7.1

iOS检测数字字段的输入结束

ios - XIB 文件未从框架加载

swift - ReactiveCocoa-如何避免在 collectionView 的单元格中多次订阅信号

java - 无法在子进程中使用 HashMap 作为 TIMESTAMP

firebase - 从Firebase数据库中检索带有子级的数据,并使用Kotlin填充对象类