将数据分配给Tableview时出现问题-Swift

时间:2019-12-23 08:54:57

标签: swift

尽管我将数据加载到函数中的gifsa字符串数组中,但是在tableView中看不到gifsa数据。 gifsa数据未出现在tableView中。数据正在veriCek()函数中加载数据。但是,它不会将数据加载到单元格中找到的imageView中。有什么问题吗?

class NewDegisimController: UITableViewController {

    var gifsa: [String] = []
 override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return gifsa.count
    }
    override func viewDidLoad() {
           super.viewDidLoad()
        veriCek()
    }
 func veriCek(){
        let client = SQLClient.sharedInstance()!
                  client.connect("...", username: "...", password: "...", database: "...") { success in
                  client.execute("SELECT ... FROM ...", completion: { (_ results: ([Any]?)) in
                   for table in results as! [[[String:AnyObject]]] {
                    for row in table {
                    for (_, value) in row {
                      if let intVal = value as? String {
                        self.gifsa.append(String(intVal))
                      }} }}
                      client.disconnect()
                  }) }
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
        let model = models[indexPath.row]

    do {
        print("gifsaas",self.gifsa)

                         let url = URL(string: self.gifsa[indexPath.row])
                           let data = try Data(contentsOf: url!)
                            cell.imageView?.image = UIImage(data: data)
                           cell.textLabel?.text = model.title
                           }
                           catch{
                               print(error)
                           }
        return cell
    }

2 个答案:

答案 0 :(得分:1)

您需要重新加载

               for table in results as! [[[String:AnyObject]]] {
                for row in table {
                for (_, value) in row {
                  if let intVal = value as? String {
                    self.gifsa.append(String(intVal))
                  }} }}
     DispatchQueue.main.async {
       self.tableView.reloadData()
     }

答案 1 :(得分:0)

您只需要致电

self.tableView.reload()

在您的veriCek()函数中,您已经设置好