Как вернуть ошибки проверки обратно в php или перейти на успех - PullRequest
0 голосов
/ 19 ноября 2018

Я использую alamofire для публикации данных в php-скрипте, который вставляет данные в базу данных mysql. Эта часть работает нормально, но у меня есть проверка на сервере, например, проверка действующего адреса электронной почты, например. Итак, вот быстрый код:

    Alamofire.request(url!, method: .post, parameters: parameters)
        .validate(statusCode: 200..<300)
        .responseJSON { response in
            switch response.result {
            case .success:
                print(response)
            case .failure(let error):
                print(error)
            }
    }

Вот php, который обрабатывает вставку.

    if($booking->create($conn)) {

        $response['status'] = "200";
        $response['message'] = "Success";

    } else {

        $response['status'] = "400";
        $response['message'] = $booking->errors;
    }

    echo json_encode($response);

В swift, ответ в консоли на неудачную проверку:

SUCCESS: {
    message =     (
        "Invalid email address",
        "Contact number required"
    );
    status = 400;
}

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

Но сначала я просто хотел сказать, есть ли какие-либо ошибки, распечатать их и, если ошибок нет, тогда переходить. Но если я пытаюсь вставить в ответ оператор if, я получаю сообщение об ошибке.

 case .success:
    if response == "200" {
    // segue
 }

Двоичный оператор '==' нельзя применять к операндам типа «DataResponse» и «String»

1 Ответ

0 голосов
/ 20 ноября 2018

Я надеюсь, что кто-то покажет мне лучший способ сделать это, но я добился определенного прогресса, и он работает. Мое понимание документации Alamofire заключается в том, что если вы получите ответ, это означает, что он всегда будет 200 ответом, независимо от того, что ваш сервер отправляет обратно. Таким образом, единственный способ обойти это - проанализировать ответ как json, используя codable, а затем сделать что-то на основе этих данных, например:

        Alamofire.request(url!, method: .post, parameters: parameters)
            .responseJSON { response in
                let data = response.data
                let jsonDecoder = JSONDecoder()


                do {

                    let serverResponse = try jsonDecoder.decode(PhpResponse.self, from: data!)
                    if serverResponse.status == "200" {

                        print("Success")

                    } else {

                        print(serverResponse.message)
                    }

                } catch {

                    debugPrint(error.localizedDescription)

                }
        }

Итак, я отправляю данные из swift на сервер, выполняю некоторую проверку формы, используя php, а затем, используя php json_encode, отправляю их обратно в swift в формате json и делаю что-то на основе этого ответа.

...