【发布时间】:2016-11-02 15:57:52
【问题描述】:
实际上,我需要在我的 TableView 上设置数据,我得到的字符串位于对 WebService 发出 POST 请求的函数上。
override func viewDidLoad() {
names.append("Data 1")
names.append("Data 2")
names.append("Data 3")
self.request()
MyTable.delegate = self
MyTable.dataSource = self
super.viewDidLoad()
}
在self.request() 功能上,我有一个可以正常工作的发布请求:
func request(){
let parameters: Parameters = [
"action": "*",
"key":"*": "*"
]
Alamofire.request("my_url", method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON { response in
switch response.result {
case .success(let JSON):
print("Validation Successful")
print(response.result.value)
let response = JSON as! NSDictionary
let userId = response.object(forKey: "Data")!
let data = userId as! NSArray
for item in data { // loop through data items
let obj = item as! NSDictionary
print("Obj: \"\(obj["KeyName"] as! String)\"")
self.names.append(obj["KeyName"] as! String)
}
print(userId)
case .failure(let error):
print(error)
}
}
}
第一部分工作正常:
names.append("imac")
names.append("Macbook")
names.append("iphon")
print("Obj: \"\(obj["KeyName"] as! String)\"") 在控制台上向我显示字符串,但是当我在 TableView 上设置它时,self.names.append(obj["KeyName"] as! String) 只显示第一部分的数据,我做错了吗?
【问题讨论】:
-
我猜这是因为它是异步的。因此,一旦获得新名称,您就需要执行
MyTable.reloadData()。还要避免命名以大写开头的变量(如MyTable=>myTable)。 -
谢谢这是问题,问候。
标签: swift xcode uitableview tableview alamofire