URL编码参数中的Bool在Swift3中使用Alamofire编码为0和1

时间:2017-06-22 09:47:47

标签: json swift swift3 alamofire put

我使用alamofire和put方法,用于发送bool值,但是当我尝试打印请求的返回时,它会从bool值转换为int。

但是在我的数据库中,我真的需要存储一个bool值。这是我的代码

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方法返回我:

  

{        “状态”:“好”,        “数据”:{            “misc”:{                “beInAnonymousPanel”:“0”            }        }    }

而不是:

  

{        “状态”:“好”,        “数据”:{            “misc”:{                “beInAnonymousPanel”:是的            }        }    }

我发现了一些其他主题,它在swift3之前,并没有得到很好的解决方案。

编辑:我使用swiftyjson

2 个答案:

答案 0 :(得分:1)

您可以解析它,将int转换为bool并保存或使用它。 转换如:

let intVar = 1
let boolVar = Bool(intVar as NSNumber)

print(boolVar) // true

答案 1 :(得分:1)

我终于找到了答案,我忘了编码我的参数:

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