Невозможно загрузить данные в виде сегментированной управляющей таблицы из базы данных Firestore - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь заполнить табличное представление относительно сегментированного элемента управления, получая данные из базы данных Firestore, но по какой-то причине я не могу этого сделать, я пытаюсь найти пример, доступный онлайн, в котором есть предустановленные данные, но здесь яЯ извлекаю данные из базы данных Firestore.

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

enter image description here

class FirstSegementViewController: UIViewController {

    @IBOutlet var segmentControl:UISegmentedControl!

    @IBOutlet var tableView: UITableView!

    var s1Post:[s1] = []
    var s2Post:[s2] = []


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        retrieveAllPosts()
    }


    func retrieveAllPosts(){
        let postsRef = Firestore.firestore().collection("posts").limit(to: 50)

        postsRef.getDocuments { (snapshot, error) in

            if let error = error {

                print(error.localizedDescription)

            } else {

                if let snapshot = snapshot {

                    for document in snapshot.documents {


                        let data = document.data()
                        //self.postKey = document.documentID
                        let username = data["post_author_username"] as? String ?? ""
                        let postTitle = data["postTitle"] as? String ?? ""
                        let postcategory = data["postcategory"] as? String ?? ""
                        let postContent = data["postContent"] as? String ?? ""
                        let postAuthorProfilePicUrl = data["post_user_profile_pic_url"] as? String ?? ""
                        let postAuthorSpinnerC = data["post_author_spinnerC"] as? String


                        let newSourse = s1(_documentId: document.documentID, _username: username, _postTitle: postTitle, _postcategory: postcategory, _postContent: postContent, _postuserprofileImagUrl: postAuthorProfilePicUrl, _postAuthorSpinncerC: postAuthorSpinnerC)

                        self.s1Post.append(newSourse)
                        // print(self.postKey)
                    }
                    self.tableView.reloadData()
                }
            }
        }
    }




    @IBAction func indexChanged(_ sender: UISegmentedControl) {
          switch segmentControl.selectedSegmentIndex
         {
         case 0:
            retrieveAllPosts()
         // label1.text = "First Segment Selected"
         case 1:

            retrieveAllPosts()
         // label1.text = "Second Segment Selected"
         default:
         break
         }

        //self.tableView.reloadData()
    }

    /*
     // MARK: - Navigation

     // In a storyboard-based application, you will often want to do a little preparation before navigation
     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     // Get the new view controller using segue.destination.
     // Pass the selected object to the new view controller.
     }
     */



    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}


extension FirstSegementViewController: UITableViewDelegate, UITableViewDataSource{

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var value = 0
        switch segmentControl.selectedSegmentIndex{
        case 0:
            value = s1Post.count
            break
        case 1:
            value = s2Post.count
            break
        default:
            break
        }
        return value
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyWsPostCell
        switch segmentControl.selectedSegmentIndex{
        case 0:
            cell.s11 = s1Post[indexPath.row]
            break
        case 1:
            cell.s21 = s2Post[indexPath.row]
            break

        default:
            break
        }
        return cell
    }


}

1 Ответ

0 голосов
/ 25 сентября 2019

Кажется, вы устанавливаете значение только для self.s1Post.

...