Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将msql中的数据拉入tableview_Swift - Fatal编程技术网

Swift 将msql中的数据拉入tableview

Swift 将msql中的数据拉入tableview,swift,Swift,我想将我从Mssql获取的数据打印到tableview。但我无法将此数据打印到tableview。我要打印的数据是一个邮件地址,一个字符串值。我正在使用mssql数据库。如何将从msql获取的数据打印到tableview class MakaleController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet var makaleTable: UITableView! var

我想将我从Mssql获取的数据打印到tableview。但我无法将此数据打印到tableview。我要打印的数据是一个邮件地址,一个字符串值。我正在使用mssql数据库。如何将从msql获取的数据打印到tableview

class MakaleController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet var makaleTable: UITableView!
    var stringvalue: [String] = []
    override func viewDidLoad() {
           super.viewDidLoad()
        let client = SQLClient.sharedInstance()!
                         client.connect("asd", username: "asd", password: "asd", database: "asd") { success in
                         client.execute("SELECT Email FROM and", completion: { (_ results: ([Any]?)) in
                          for table in results as! [[[String:AnyObject]]] {
                              for row in table {
                                  for (columnName, value) in row {
                                           print(value)
                                          if let intVal = value as? Int {
                                               self.stringvalue.append(String(intVal))
                                            DispatchQueue.main.async { self.makaleTable.reloadData() }}} }}
                          client.disconnect()
                      })
                  }
    }

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

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {         
       let cell:UITableViewCell = self.makaleTable.dequeueReusableCell(withIdentifier: "makalecell") as! UITableViewCell
            cell.textLabel?.text = self.stringvalue[indexPath.row]
                    return cell
        }
}

首先,检查您是否成功地将原始值强制转换为
Int
(这就是我添加第二条print语句的原因),然后在所有循环之后重新加载表(而不是像您所做的那样从循环内部):


您需要更具体地说明问题所在(数据抓取、数据解析、单元渲染等)。
print(value)
是否成功打印了正确的值?它正确打印了数据。数据库表类型:nvarhart输出正常,但不会再次打印到tableview。在我的edit中重新加载表后,我添加了第三条print语句。打印什么?输出如下:[]然后剩下的问题是您没有成功地将
NVARCHAR
转换为
Int
。您成功地打印了
NVARCHAR
,但没有将其转换为
Int
(然后转换为
字符串
)。
override func viewDidLoad() {
    super.viewDidLoad()

    let client = SQLClient.sharedInstance()!

    client.connect("asd", username: "asd", password: "asd", database: "asd") { success in

        client.execute("SELECT Email FROM and", completion: { (_ results: ([Any]?)) in

            for table in results as! [[[String:AnyObject]]] {

                for row in table {

                    for (columnName, value) in row {

                        print(value) // prints correctly as NVARCHAR

                        if let val = value as? String { // edit: skip casting as Int, go straight to String
                            stringvalue.append(val)
                        }

                    }

                }

            }

            // reload table once after all loops are complete
            DispatchQueue.main.async {
                self.makaleTable.reloadData()
            }

            client.disconnect()

        })

    }

}