gpt4 book ai didi

mysql - 在 Swift 中使用 array.append() 向数组添加值时出现问题

转载 作者:行者123 更新时间:2023-11-29 19:28:25 25 4
gpt4 key购买 nike

目前,我们正在为 iOS 编写一个 Swift 应用程序,我们希望将 JSON 网站(MySql 数据库)的数据获取到 TableViewCell 中。问题是在单元格中 append 标签字符串的文本值。 Swift 可以将 JSON 值导入到 name 变量中,但我无法将其分配给单元格的文本数组。我没有语法错误,但是 data[0] 变量打印了一些东西。如“123”。为什么是123?测试值为“测试”。我现在不知道将值 append 到数组的问题出在哪里,之后的结果是 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
}
}

最佳答案

这是因为您的数组属性和数据回调 block 参数具有相同的名称“data”。在您的代码中,您使用 print("(data![0])"as String) 而不是 print("(self.data![0])"as String) => 您必须添加 self。

然后你可以像这样优化你的代码(它是可选的:它就像代码审查;))尝试这样做- 将数组类型更改为 String 像这样

var data = [String]()

- webService 回调更改您的代码,如下所示:

 if let parseJSON = json {

if let Name = parseJSON["Name"] as? String{
print("\(Name)")
self.data.append(Name)
print("\(self.data.last)")//123
}

}

关于mysql - 在 Swift 中使用 array.append() 向数组添加值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com