サーバーからJSONデータをテーブルビューセルに表示しようとしています。レスポンス値の取得に問題があります。 jobTime.countを取得してjobEndTimeの値を取得する方法は? jobTime-jobEndTimeを各セルに表示したい。サーバーからJSONデータをSwift 3のテーブルビューセルに挿入する方法
カスタムの構造化ジョブを宣言する必要があると思います。しかし、私はどのように作成するのか分からない。乱雑なコードについては申し訳ありません
struct Job {
var jobDate: String
var jobEndTime: Int
var jobID: Int
var jobTime: Int
init(dict: [String:AnyObject]) {
self.jobDate = dict["jobDate"] as! String
self.jobEndTime = dict["jobEndTime"] as! Int
self.jobID = dict["jobID"] as! Int
self.jobTime = dict["jobTime"] as! Int
}
}
var jobs = [Job]()
override func viewDidLoad() {
super.viewDidLoad()
retrieveTime()
}
func retrieveTime(){
if let crew = user!["crew"] as? [String:Any], let crewID = crew["crew_id"] as? String{
let param = ["action": "retrieve time", "job": ["crew_id": crewID, "jobDate": passedData]] as [String : Any]
let headers = [
"content-type": "application/json",
"cache-control": "no-cache"
]
if let postData = (try? JSONSerialization.data(withJSONObject: param, options: [])) {
let request = NSMutableURLRequest(url: URL(string: "http://52.221.231.3/gv/app_api.php")!,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request as URLRequest) {
(data, response, error) -> Void in
DispatchQueue.main.async(execute: {
if let json = (try? JSONSerialization.jsonObject(with: data!, options: [])) as? NSDictionary
{
let result = json["result"] as? String
if (result == "success") {
if let jsonData = json["jobs"] as? [[String:AnyObject]] {
self.jobs = jsonData.map { Job(dict: $0) }
}
print(self.jobs)
self.tableView.reloadData()
}
}else{
print(result!)
}
}
})
}
task.resume()
}
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return jobs.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "jobCell", for: indexPath)
let job = self.jobs[indexPath.row]
cell.textLabel?.text = job.jobDate
return cell
}
、これはスウィフトでJSONを扱う私の第一の時間です。提案として
JSON Data :
{
jobs = (
{
jobDate = "2017-09-07";
jobEndTime = 1504749600;
jobID = 104;
jobTime = 1504746000;
},
{
jobDate = "2017-09-07";
jobEndTime = 1504756800;
jobID = 105;
jobTime = 1504753200;
}
);
message = "Retrieve Sucessfully";
result = success;
}
JSONの出力を教えてください。 – Siyavash
まず、viewDidLoadにtableview.reload()を配置しないでください。すべての処理の後でURLSessionコールバックの中に入れてください。データを受け取った後に実行されます。 –
さて、質問を更新しました。 –