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