実際には、TableViewにデータを設定する必要があります。得られる文字列は、WebServiceでPOSTリクエストを行う関数上にあります。 self.request()
機能で関数のTableView Swift 3の値を設定する
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()
}
私は正常に動作POSTリクエストを持っている:
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'のように、大文字で始まるvarの命名も避けてください。 – Larme
ありがとうございました。 –