Почему я продолжаю получать ноль, если условие правильное

Я продолжаю получать NIL и ошибку после успешного выполнения условия

У меня есть этот PHP

<?php
require_once 'hehe';
error_reporting(0);
$sql = "SELECT Precio FROM Solicitudes where ID_Pasajero = '".$_POST['ID_Pasajero']."' and Estado = '1' ORDER BY ID_Solicitudes DESC LIMIT 1";
$result = $conexion->query($sql);
if ($result->num_rows > 0) {
    $count = $result->num_rows;
    $row = mysqli_fetch_array($result);
    echo '{
    "Response":"true",
    "Perfil":[{
        "Precio":"'.$row['0'].'"
    }]
}';

}else{
    echo '{
    "Response":"false",
    "Perfil":[{
        "Precio":"false"
    }]
}';
}


mysqli_close($conexion);
?>

и это мой быстрый код

@objc func ConsultarSiAcepto(){

    let idpa = UserDefaults.standard.string(forKey: "idUser")

    let myURL = URL(string: "hee hee")
    var request = URLRequest(url: myURL!)
    request.httpMethod = "POST"
    let posString = "ID_Pasajero=\(idpa!)"
    request.httpBody = posString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: request) {
        data, response, error in

        if let error = error {
            print("error=\(error)")
            return
        }

        guard let data = data else {
            print("Something wrong")
            return
        }

        struct Blog: Decodable {
            let Response: String
            let articles: [Article]

            enum CodingKeys : String, CodingKey {
                case Response

                case articles = "Perfil"
            }
        }

        struct Article: Decodable {
            let Precio: String

        }

        do {
            let blog = try JSONDecoder().decode(Blog.self, from: data)


            DispatchQueue.main.async {
                if blog.Response == "true" {
                    print(data)
                    print(response)
                    print("el conductor acepto el viaje.. enviando cotizacion")
                    for article in blog.articles {

                        let precio = article.Precio
                        self.elconductorcobra.text = "Costo del viaje \(precio)"

                        break
                    }

                }

                if blog.Response == "false" {

                    print("esperando a que el conductor envie la cotizacion...")

                }
                else {
                    print(error)
                    print("error hapend :0")

                }

            } //aqui termina el dispatch main
        }

        catch {
            print("Error: Couldn't decode data into Blog:", error)
            print(error)
            return

        }

    }
    task.resume()


}

то, что я делаю с этим кодом, - это таймер

self.helloWorldTimer = Timer.scheduledTimer(timeInterval: 15.0, target: self, selector: #selector(UnaVezLogeadoViewController.ConsultarSiAcepto), userInfo: nil, repeats: true)

который консультируется, если драйвер уже принял запрос, поэтому каждые 15 секунд код отправляет этот PHP в мою БД

Я не знаю, чего не хватает, потому что я получаю этот ответ с консоли

esperando a que el conductor envie la cotizacion...
esperando a que el conductor envie la cotizacion...
96 bytes
Optional(<NSHTTPURLResponse: 0x16790b30> { URL:     hehe } {    status code: 200, headers {
"Content-Encoding" = gzip;
"Content-Type" = "text/html; charset=UTF-8";
Date = "Fri, 11 Jan 2019 23:51:59 GMT";
Server = Apache;
"x-powered-by" = "PHP/7.1.25";
 } })
el conductor acepto el viaje.. enviando cotizacion
nil
error hapend :0

Я отпустил таймер 2 раза (30 с), чтобы увидеть, удерживается ли код драйвера для ввода некоторой информации

'esperando a que el conductor envie la cotizacion...'

так что он работает на HOLD

if blog.Response == "false" {

                    print("esperando a que el conductor envie la cotizacion...")

                }

как вы можете видеть, код получает правильные значения

96 bytes
Optional(<NSHTTPURLResponse: 0x16790b30> { URL:     hehe } {    status code: 200, headers {
"Content-Encoding" = gzip;
"Content-Type" = "text/html; charset=UTF-8";
Date = "Fri, 11 Jan 2019 23:51:59 GMT";
Server = Apache;
"x-powered-by" = "PHP/7.1.25";
 } })
el conductor acepto el viaje.. enviando cotizacion

здесь код показывает ошибки / анализирует

DispatchQueue.main.async {
                if blog.Response == "true" {
                    print(data)
                    print(response)
                    print("el conductor acepto el viaje.. enviando cotizacion")
                    for article in blog.articles {

                        let precio = article.Precio
                        self.elconductorcobra.text = "Costo del viaje \(precio)" // hereeeeeee

                        break
                    }

                }

                if blog.Response == "false" {

                    print("esperando a que el conductor envie la cotizacion...")

                }
                else {
                    print(error)
                    print("error hapend :0")

                }

            }

информация заполняется правильно по мере написания кода Я не получаю никаких ошибок на экране или функций, я не могу продолжить работу только из-за этой ошибки, могу ли я избежать этого в любом случае?

Я много раз пробовал изменить свой PHP разными способами, чтобы изменить ответ JSON и избежать этой ошибки NIL.

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

проблема решена.

Я сделал другой VC, который по умолчанию запускает функцию и теперь работает

Другие вопросы по теме