Search code examples
jsonswiftswift3alamofireput

Bool in URL encoded parameters encodes as 0 and 1 with Alamofire in Swift3


I use alamofire with put method, for send bool value, but when I try to print the return of my request it transform from bool value to an int.

But in my database I really neeed to stock a bool value. Here is my code

func sendNewData(key:String, index: Int, value: Bool, sectionName: String) -> Void {
    let url:String = "\(self.API_URL_BASE)\(API_URL_SETTINGS)"

    var parameters: Parameters
    parameters = [
        sectionName: [
            key: value,
        ]
    ]
    Alamofire.request(url, method: .put, parameters: parameters, headers: Api.headers).responseJSON
    { response in
        if (response.error == nil)
        {
            let json = JSON(response.result.value!)
            if (json["status"].stringValue == "ok")
            {
                self.getSettings()
            }
        }
        else
        {
            print(response.error)
        }
    }
}

func getSettings() -> Void {
    let url:String = "\(self.API_URL_BASE)\(API_URL_SETTINGS)"
    Alamofire.request(url, method: .get, headers: Api.headers).responseJSON
        { response in
            if (response.error == nil)
            {
                let json = JSON(response.result.value!)
                print(json)
            }
            else
            {
                print(response.error as Any)
            }
    }
}

getSettings method return me:

{ "status" : "ok", "data" : { "misc" : { "beInAnonymousPanel" : "0" } } }

Instead of:

{ "status" : "ok", "data" : { "misc" : { "beInAnonymousPanel" : true } } }

I find some other topic and it's before swift3 and they got no good solution.

Edit: I use swiftyjson


Solution

  • I finally found my answer, I forgot to encode my parameters:

        Alamofire.request(url, method: .put, parameters: parameters, encoding: JSONEncoding.default,  headers: Api.headers).responseJSON
        { response in.. }