Значение типа 'PostModel.Type' не имеет подписок swift - PullRequest
0 голосов
/ 17 января 2020

Я не очень уверен, почему он выдает мне ошибку "Значение типа 'PostModel.Type' не имеет подписок" введите описание изображения здесь .

class Universalchatcontroller: UIViewController,UITableViewDelegate,UITableViewDataSource{

  let transition = slide()
  var tableview : UITableView!      
  var postsdata = [PostModel]()

   // var ref :  DatabaseReference!
  //  var databaseHandle : DatabaseHandle?

    override func viewDidLoad()
        {
            super.viewDidLoad()
            print("mainviewdidload")

            //LOOK  HERE  RAYMOND
            //Building a News Feed w/ AutoLayout Constraints - Swift & Firebase Part 4 (youtube)
            tableview = UITableView(frame:view.bounds,style: .plain)
            //tableview.backgroundColor = UIColor.blue
            view.addSubview(tableview)

            var layoutguide : UILayoutGuide!
            layoutguide = view.safeAreaLayoutGuide

            let cellNib = UINib(nibName:"POSTTableViewCell" , bundle: nil)
            tableview.register(cellNib, forCellReuseIdentifier: "postcell")       
            tableview.leadingAnchor.constraint(equalTo: layoutguide.leadingAnchor).isActive = true
            tableview.topAnchor.constraint(equalTo: layoutguide.topAnchor).isActive = true
            tableview.trailingAnchor.constraint(equalTo: layoutguide.trailingAnchor).isActive = true
            tableview.bottomAnchor.constraint(equalTo: layoutguide.bottomAnchor).isActive = true
            tableview.delegate = self
            tableview.dataSource = self

            observePosts()
            tableview.reloadData()
         }

    func observePosts() {

        let postref = Database.database().reference().child("moreposts?")
        var tempPost = [PostModel]()

        postref.observe(.value, with: {snapshot in
            for child in snapshot.children {
                if let childSnapshot = child as? DataSnapshot,
                    let dict =  childSnapshot.value as? [String: Any],
                    let author = dict["author"] as? [String:Any],
                    let uid = author[Auth.auth().currentUser!.uid],
                    let text = dict["text"]as? String,
                    let username = author[(Auth.auth().currentUser?.displayName)!] as? String {

                    let raymond  = Auth.auth().currentUser?.displayName
                    let postMODEL = PostModel(id: childSnapshot.key, author: raymond!, text: text)
                    tempPost.append(postMODEL)

                }
            }
        })
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return postsdata.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "postcell", for: indexPath) as! POSTTableViewCell

        cell.set(post: PostModel[indexPath.row])
        return cell

    }    

Ответы [ 2 ]

1 голос
/ 17 января 2020

попробуйте использовать тот же объект источника данных.

cell.set(post: PostModel[indexPath.row])

К

cell.set(post: postsdata[indexPath.row])
0 голосов
/ 17 января 2020

Вы должны присвоить массив PostModel заменить

cell.set(post: PostModel[indexPath.row])

на

cell.set(post: postsdata[indexPath.row])

И из вашего кода в observePosts() добавить данные в postsdata или объявить tempPost глобально и использовать этот массив в cellForRowAt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...