【问题标题】:segue to specific Firebase data转到特定的 Firebase 数据
【发布时间】:2017-11-10 14:41:26
【问题描述】:

我有一个 tableView,它有大约 5 个单元格,每个单元格都有不同的主题。单击单元格后,我想转到一个视图控制器,该控制器填充有 Firebase 数据,仅包含点击了特定主题的帖子。

override func viewDidLoad() {
        super.viewDidLoad()
  FIRDatabase.database().reference().child("books").observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in

            if let postsDictionary = snapshot .value as? [String: AnyObject] {


                self.Category = postsDictionary["Category"] as? String ?? ""


            }})
    }

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "segue" {

                let showBooks = segue.destination as! SearchTableViewController

                showBooks.categorySegue = self.Category

        }
    }

在我的 Firebase 数据库中,我有一堆不同用户发布的帖子,在每个帖子中,他们设置了帖子所属的类别。例如,如果我单击具有主题的 tableView 单元格:经济学,我想转到只有经济学类别的视图控制器。

这是我检索归因于某些主题的帖子的方式:

databaseRef.child("books").queryOrdered(byChild:  "category").queryEqual(toValue: categorySegue).observeSingleEvent(of: .value, with: { (snapshot) in



        let key = snapshot.key
        let snapshot = snapshot.value as? NSDictionary
        snapshot?.setValue(key, forKey: "uid")

        if(key == self.loggedUser?.uid)
        {
            print("same as logged in user")
        }
        else
        {
        self.usersArray.append(snapshot)
             self.followUsersTableView.insertRows(at: [IndexPath(row:self.usersArray.count-1,section:0)], with: UITableViewRowAnimation.automatic)
        }



        }) { (error) in
            print(error.localizedDescription)
        }
        tableView.tableFooterView = UIView()

【问题讨论】:

    标签: ios uitableview firebase firebase-realtime-database


    【解决方案1】:

    如果类别在一个 uniqueID 下的帖子节点的正下方,那么试试这个

    示例:

    posts
        -> post_id1
             ->category : "books"
             -> other keys
    
        -> post_id2
             ->category : "music"
             -> other keys
    

    按类别获取帖子的查询是这样的,

     let strCategory = "music"
     baseRef.child("posts").queryOrdered(byChild:  "category").queryEqualToValue(strCategory).observeSingleEvent(of: .value, with: { (snapshot) in
    
      print(snapshot)
    
    })
    

    要在选择时获取单元格索引,

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let indexPath = tableView.indexPathForSelectedRow{
            let selectedRow = indexPath.row
            let categorySelected = Subjects[selectedRow]
    
        }
    }
    

    【讨论】:

    • 它不起作用,但我认为这是我的目的。当我使用问题中的代码尝试接收点击的特定主题时,这就是我用主题 var Subjects = ["History", "Language", "Economics", "Business", "More Searches"] 填充表格视图单元格的方式,它返回 nil
    • 如何在单元格选择中检索类别名称?
    • 还是直接在单元格部分进行segue?
    • 我直接选择单元格,所以现在我想弄清楚如何在单元格选择时检索主题
    • 谢谢!好的,我越来越近了。但是,当我单击单元格进行 segue 时,它​​什么也没有显示。即使我知道它正在捕获正确的信息,因为我包含了 print(snapshot)
    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 2016-12-09
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2018-07-05
    相关资源
    最近更新 更多