Swift Firebase读取孩子的孩子

时间:2017-09-29 10:36:04

标签: swift firebase firebase-realtime-database swift4

所以我试着阅读下面“食谱”下面的autoID子项的子项是我的Firebase数据库的图片,下面是应该检索“描述”和“名称”的值并插入的方法他们变成了变数。

运行应用时我目前遇到的错误是:

Could not cast value of type '__NSCFString' (0x10ad2afb8) to 'NSDictionary' (0x10ad2bfa8).

My Firebase database

    ref = Database.database().reference()

    databaseHandle = ref?.child("Recipes").observe(.childAdded) { (snapshot) in

        for snap in snapshot.children
        {
            let recipeSnap = snap as! DataSnapshot
            let recipeID = recipeSnap.key
            let dict = recipeSnap.value as! [String:AnyObject]
            let recipeName = dict["Name"] as! String
            let recipeDescription = dict["Description"] as! String
            print("key = \(recipeID) and name = \(recipeName) and description = \(recipeDescription)")
        }
  }

print语句就在那里进行测试。

1 个答案:

答案 0 :(得分:3)

请尝试以下操作,让我知道它现在是否有效:

parentRef.queryEqual(toValue:DefineWhatToSearchForHere).observeSingleEvent(of: .value, with: { snapshot in

如果您只想检索一个特定配方的名称和描述,则应将第三行更改为

override func viewDidLoad()

如果您经常想要更新以反映更改,您可以使用计时器每隔x秒调用此函数并将其添加到time = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(ViewController.updateFBData), userInfo: nil, repeats: true) ,例如

func updateFBData()

创建一个名为timeInterval的函数后,您可以在其中执行任何操作以获取新数据(请参见上文)并在定义的{{1}}中调用它

或者你可以做什么AttilaHegedüsin this excellent tutorial.