Как разместить Integer в параметрах Alamofire - PullRequest
0 голосов
/ 11 мая 2018

Я следовал учебнику для запроса регистрации и входа в xcode. Но у меня есть проблема с Кодексом, потому что я изменил некоторые его значения. Мои переменные в скрипте php: ssiss (строка, строка, int, строка, строка). В быстром файле я использую Alamofire. Вот оно:

 @IBAction func buttonRegister(_ sender: UIButton) {


    let ageINT = Int(ageTF.text!);


    //creating parameters for the post request
    let parameters: Parameters=[
        "name":nameTF.text!,
        "username":usernameTF.text!,
        "age": ageINT ?? 0,
        "country":countryTF.text!,
        "password":passwordTF.text!,
    ]

    //Sending http post request
    Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON
        {
            response in
            //printing response
            print(response)

            //getting the json value from the server
            if let result = response.result.value {

                //converting it as NSDictionary
                let jsonData = result as! NSDictionary

                //displaying the message in label
                self.labelMessage.text = jsonData.value(forKey: "message") as! String?
            }
    }

Я думаю, проблема в том, что я передаю строковое значение вместо целочисленного значения. Вот почему я уже изменил значение "age" с "age": ageTF.text!, на "age": ageINT ?? 0,

Я получаю сообщение об ошибке: «Обязательные параметры отсутствуют».

Я получаю это сообщение «ошибка-ответ» из-за этого php-скрипта:

<?php

 //importing required script
 require_once '../includes/DbOperation.php';

 $response = array();

 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!verifyRequiredParams(array('name', 'username', 'age', 'country',       'password'))) {
    //getting values
    $name = $_POST["name"];
    $username = $_POST["username"];
    $age = $_POST["age"];
    $country = $_POST["country"];
    $password = $_POST["password"];

    //creating db operation object
    $db = new DbOperation();

    //adding user to database
    $result = $db->createUser($name, $username, $age, $country, $password);

    //making the response accordingly
    if ($result == USER_CREATED) {
        $response['error'] = false;
        $response['message'] = 'User created successfully';
    } elseif ($result == USER_ALREADY_EXIST) {
        $response['error'] = true;
        $response['message'] = 'User already exist';
    } elseif ($result == USER_NOT_CREATED) {
        $response['error'] = true;
        $response['message'] = 'Some error occurred';
    }
} else {
    $response['error'] = true;
    $response['message'] = 'Required parameters are missing';
}
 } else {
$response['error'] = true;
$response['message'] = 'Invalid request';
}

//function to validate the required parameter in request
 function verifyRequiredParams($required_fields)
 {

//Getting the request parameters
$request_params = $_REQUEST;

//Looping through all the parameters
foreach ($required_fields as $field) {
    //if any requred parameter is missing
    if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {

        //returning true;
        return true;
    }
}
return false;
}

print_r(json_encode($response));
 ?>

А это другой скрипт php:

<?php

class DbOperation
{
    private $conn;

    //Constructor
    function __construct()
    {
        require_once dirname(__FILE__) . '/Constants.php';
        require_once dirname(__FILE__) . '/DbConnect.php';
        // opening db connection
        $db = new DbConnect();
        $this->conn = $db->connect();
    }

    //Function to create a new user
    public function createUser($name, $username, $age, $country, $password)
    {
        if (!$this->isUserExist($username)) {
            $password = md5($pass);
            $stmt = $this->conn->prepare("INSERT INTO user (name, username, age, country, password) VALUES (?, ?, ?, ?, ?)");
            $stmt->bind_param("ssiss", $name, $username, $age, $country, $password);
            if ($stmt->execute()) {
                return USER_CREATED;
            } else {
                return USER_NOT_CREATED;
            }
        } else {
            return USER_ALREADY_EXIST;
        }
    }


    private function isUserExist($username)
    {
        $stmt = $this->conn->prepare("SELECT id FROM user WHERE username = ? ");
        $stmt->bind_param("s", $username);
        $stmt->execute();
        $stmt->store_result();
        return $stmt->num_rows > 0;
    }
    }
...