【问题标题】:Getting an array from Firebase Database从 Firebase 数据库获取数组
【发布时间】:2017-07-18 02:26:30
【问题描述】:

我在“urls”键下有一个 [String] 数组。我怎样才能把它弄出来?这是我的结构:

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    您可以通过使用对 urls 引用的观察者并使用其值初始化一个数组来读取它。

    ref = Database.database().reference()
    
    ref.child("sectionList").child("name of").child("urls")observe(.value, with: { (snapshot:FIRDataSnapshot) in
    
      var urls : [String] = snapshot.children
    
    }
    

    "这个函数有两个参数:一个 FIRDataEventType 的实例和一个闭包。 事件类型指定您要监听的事件。该代码侦听 .value 事件类型,该事件类型又会侦听 Firebase 数据库中数据的所有类型的更改——添加、删除和更改。 发生更改时,数据库会使用最新数据更新应用程序。 应用程序通过闭包收到更改通知,该闭包传递一个 FIRDataSnapshot 实例。顾名思义,快照代表了特定时刻的数据。要访问快照中的数据,请使用 value 属性。” 来源:(https://www.raywenderlich.com/139322/firebase-tutorial-getting-started-2)

    【讨论】:

    • 我无法将 snapshot.children 转换为 [String]
    • 是的,我就是这么想的。 snapshot.children 是 JSON,而不是数组。它可以转换为 [String : AnyObject]() 类型的字典
    【解决方案2】:

    我是这样理解的

        let ref = Database.database().reference(withPath: "sectionList")
        ref.child("name of").child("urls").observeSingleEvent(of: .value, with: { (dataSnapshot:DataSnapshot) in
            for object in dataSnapshot.children.allObjects as! [DataSnapshot] {
                for obj in object.value as! NSArray {
                    print("value = \(obj)")
                }
            }
    
        })
    

    【讨论】:

      【解决方案3】:

      基本上,我强烈建议你看看this 教程,尤其是关于检索数据的部分。在标准 MVC 模型中设计您的项目将非常有用。希望我的回答能帮到你;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-13
        • 2020-12-22
        • 2019-03-10
        • 2019-12-20
        • 1970-01-01
        相关资源
        最近更新 更多