Как я могу отфильтровать полученные данные и загрузить их в таблицу? - PullRequest
0 голосов
/ 03 мая 2019

Я использую базу данных Firebase.Я получил данные и хочу фильтровать и отображать только ту информацию, которая соответствует выбору пользователей.

Я использовал условный оператор для поиска подходящего значения и добавления списка, однако я не могу загрузить таблицу для загрузки.Когда я печатаю переменную, она печатает 0. Нужна помощь, спасибо.

   override func viewDidLoad() {
    super.viewDidLoad()

    projectlbl.text = "Brand: \((repair?.brand)!) Model: \((repair?.modelNumber)!)"

    refResources = Database.database().reference().child("resources");


    let selectedProject = "\((repair?.modelNumber)!)"


    //observing the data changes
    refResources!.observe(DataEventType.value, with: { (snapshot) in
        //if the reference have some values
        if snapshot.childrenCount > 0 {

            //clearing the list
            self.resourceList.removeAll()

            //iterating through all the values
            for resources in snapshot.children.allObjects as! [DataSnapshot] {
                //getting values
                let resourceObject = resources.value as? [String: AnyObject]
                let id  = resourceObject?["id"]
                let RSSSubCat  = resourceObject?["RSSSubCat"]
                let RSSBrand = resourceObject?["RSSBrand"]
                let RSSModelNumber = resourceObject?["RSSModelNumber"]
                let RSSTitle = resourceObject?["RSSTitle"]
                let RSSUrl = resourceObject?["RSSUrl"]

                //creating resource object with model and fetched values
                let resource = resourceModel(id: id as! String?, RSSSubCat: RSSSubCat as! String?, RSSBrand: RSSBrand as! String?, RSSModelNumber: RSSModelNumber as! String?, RSSTitle: RSSTitle as! String?, RSSUrl: RSSUrl as! String?)

                //appending it to list
                print(snapshot.childrenCount)

                if selectedProject == resource.RSSModelNumber {
                    print(selectedProject)
                    self.resourceList.append(resource)
                    self.diagResTable.reloadData()
                } else {
                    return
                }

            }

            //reloading the tableview
            self.diagResTable.reloadData()
        }
    })

1 Ответ

0 голосов
/ 03 мая 2019

Нужно изменить слушателя ... Простой, но упускаемый из виду.

       let selectedModelNumber = (self.refResources?.queryOrdered(byChild: "RSSModelNumber").queryEqual(toValue: selectedProject))


    //observing the data changes
    selectedModelNumber!.observe(DataEventType.value, with: { (snapshot) in
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...