У меня проблема с загрузкой данных json Swift4, когда его не нашли, почему? - PullRequest
0 голосов
/ 23 марта 2019

Когда мой скрипт просит сервер загрузить данные и получить необходимые данные, все идет хорошо, но когда он не может найти необходимые данные, я не могу что-то сделать в другом месте.

func myJSON(sec:Int) {
    var request = URLRequest(url: URL(string: "https://xx.com/index.php")!)
    let postString = "sec=\(sec)"
    request.httpMethod = "POST"
    request.httpBody = postString.data(using: .utf8)
    request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    let task = URLSession.shared.dataTask(with: request) {
        data, response, error in
        if error == nil, let data = data {
            do {
                if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? [[String:String]] {
                    for item in jsonData {
                        if let sec = item["sec"] {
                                self.myArray_sec.append(sec)

                                DispatchQueue.main.async {

                                        self.myTable!.reloadData()
                                        //It is happening here and things are going well
                                        self.myTable!.tableFooterView?.isHidden = true

                                }

                        }else if let error = item["error"]{

                            DispatchQueue.main.async {
                                print("error: ",error)
                                //But here it cannot be done
                                self.myTable!.tableFooterView?.isHidden = true

                            }
                        }
                    }
                }
            } catch let error as NSError {
                print("error: ",error)
            }
        }
    }
    task.resume()
}

Ошибка печати: нет данных

PHP код работает

 $result = mysqli_query($con,"SELECT * FROM `myTable` WHERE `sec`='".$_POST['sec']."';");

    while($data = mysqli_fetch_assoc($result)) {
         $rows[] = $data;
    }

    if ($rows[0]['sec'] != "") {
        print json_encode($rows);
    } 
    else {
        print '[{"error":"no Data"}]';
    }

1 Ответ

0 голосов
/ 24 марта 2019

Проблема была решена таймером

}else if let error = item["error"]{

     DispatchQueue.main.async {
          print("error: ",error)

          let myTimer = Timer.scheduledTimer(timeInterval: 2,
                                             target: self,
                                             selector: #selector(self.refresh),
                                             userInfo: nil,
                                             repeats: false)

     }
 }


@objc func refresh() {

    self.myTable!.tableFooterView?.isHidden = true

}
...