在 Swift 中使用 Firebase 获取值属性

Posted

技术标签:

【中文标题】在 Swift 中使用 Firebase 获取值属性【英文标题】:Get value property using Firebase in Swift 【发布时间】:2016-08-02 09:24:45 【问题描述】:

使用 Firebase 我试图获得属于“品牌”的“产品”价值。例如,如果我单击“品牌”-“CATCH”所在的单元格,我想显示所有“CATCH”产品的新tableView。我怎样才能做到这一点?这是 Firebase 结构:

在这里,我得到了所有这样的“品牌”名称:

func parseSnusBrands()
    let ref = FIRDatabase.database().reference().child("Snuses").child("Brands")

    ref.queryOrderedByKey().observeEventType(.Value, withBlock:  (snapshot) in
        if snapshot.exists() 
            if let all = (snapshot.value?.allKeys)! as? [String]
                self.snusBrandsArray = all
                self.snusBrandsTableView.reloadData()
            
        
    )

像这样我正在尝试使用allKeys 获取“产品”值:

func parseSnusProducts() 
    let ref = FIRDatabase.database().reference().child("Snuses").child("Brands").child("Products")

    ref.queryOrderedByKey().observeEventType(.Value, withBlock:  (snapshot) in
        if snapshot.exists() 
            if let all = (snapshot.value?.allValues)! as? [String]
                self.snusBrandsArray = all
                self.snusBrandsTableView.reloadData()
            
        
    )

这就是我检测单元格点击的方式:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    parseSnusProducts()


我还有 2 个表格视图和自定义单元格来显示“产品”

细胞检测对吗?如何做到这一点?我在互联网上没有通过谷歌搜索看到任何内容,但也许你知道一些链接。

【问题讨论】:

【参考方案1】:

我认为要在一个数组中获取所有值和键,您需要使用[[String:AnyObject]]

var snusBrandsArray = [[String:AnyObject]]()

override func viewDidLoad() 
    super.viewDidLoad()
    let ref = FIRDatabase.database().reference().child("Snuses").child("Brands")

    ref.observeSingleEventOfType(.Value, withBlock:  (snapshot) in
        if snapshot.exists() 
            if let all = (snapshot.value?.allKeys)! as? [String]
                for a in all
                    if let products = snapshot.value![a] as? [[String:String]]
                        self.snusBrandsArray.append(["key":a,"value":products])
                    
                
                self.yourtableview.reloadData()
            
        
    )



func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    //cell declaration
    print(snusBrandsArray[indexPath.row]["key"])


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    print("products at \(indexPath.row)  --> \(snusBrandsArray[indexPath.row]["value"])")

【讨论】:

“同一时间”是什么意思?在我看来,我首先加载品牌,然后加载产品:D 这意味着只有一个观察者和一个数组..你可以得到两个

以上是关于在 Swift 中使用 Firebase 获取值属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 URL (Swift) 从 Firebase 获取数据

Firebase queryEqualToValue 在 Swift 2.3 中获取密钥

如何在 Swift 上的 Firebase 中获取嵌套键中的值

使用 Firebase 和 Swift 从查询中获取信息 [重复]

如何从fireBase推送通知swift 4中获取数据

使用 Swift 从带有条件的 Firebase 数据库中获取数据