【发布时间】:2017-06-18 04:14:57
【问题描述】:
在我们正在为 iOS 编写一个 Swift 应用程序的那一刻,我们希望将我们的 JSON 网站(MySql 数据库)的数据获取到 TableViewCell 中。问题在于为单元格中的标签附加字符串的文本值。 Swift 可以将 JSON 值导入到 name 变量中,但我无法将其分配给单元格的文本数组。我没有语法错误,但是 data[0] 变量打印了某事。作为“123”。为什么是123?测试值为“测试”。我现在不知道将值附加到数组的问题出在哪里,之后结果是 123。请帮忙。
这里是源代码:
class listViewViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var data:[String?] = []
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let myUrl = URL(string: "");//Empty link for this question
var request = URLRequest(url:myUrl!)
request.httpMethod = "POST"
let postString = "lid=1";
request.httpBody = postString.data(using: String.Encoding.utf8);
let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response!)")
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
if let parseJSON = json {
let Name = parseJSON["Name"] as? String
print("\(Name)")//Test
self.data.append(Name!)
print("\(data![0])" as String)//123
}
} catch {
print(error)
}
}
task.resume()
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! listViewTableViewCell
print("\(data[indexPath.row])")
let dataCell = data[indexPath.row]
cell.listViewCell.text = dataCell
return cell
}
}
【问题讨论】:
-
什么意思? data![0] 的值应该是 Name 中的值的字符串。
-
尝试将数据分配为 var data = [String]()
-
同样的问题,print("(data![0])" as String) 是“123”,而不是名称“Test”的附加值。这个结果从何而来?我只在单元格文本的数据值中添加了名称
标签: mysql arrays json swift append