我正在学习 Swift 并尝试从本地主机 MySQL 数据库中提取数据。按照一些教程,我能够得到这个:
func getInfo() {
let url = NSURL(string: "http://localhost:8888/service.php")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!) {(data, response, error) in
var d = NSString(data: data, encoding: NSUTF8StringEncoding)
var arr = d!.componentsSeparatedByString("<")
var dataweneed:NSString = arr[0] as! NSString
if let data = NSJSONSerialization.JSONObjectWithData(dataweneed.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSArray {
self.tableData = data
println(data)
}
}
task.resume()
这是在 View Controller 文件中。
我从 viewDidLoad 调用函数。我在顶部声明了一个变量 tableData:NSArray = [],我可以通过函数内部的 println(data) 查看数据,但是如果我尝试在函数外部使用 tableData,它是空的。
如何获取变量“data”中的数据以便能够在函数外部使用?
最佳答案
当您以这种方式从服务器获取数据时,重新加载您的 tableView:
func getInfo() {
let url = NSURL(string: "http://localhost:8888/service.php")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!) {(data, response, error) in
var d = NSString(data: data, encoding: NSUTF8StringEncoding)
var arr = d!.componentsSeparatedByString("<")
var dataweneed:NSString = arr[0] as! NSString
if let data = NSJSONSerialization.JSONObjectWithData(dataweneed.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSArray {
self.tableData = data
println(data)
// Reload tableView here.
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
}
task.resume()
希望这会有所帮助。
关于ios - 连接到 MySQL 数据库并创建数组以在其他地方使用 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31358245/