我使用带有put方法的alamofire来发送bool值,但是当我尝试打印请求的返回值时,它会从bool值转换为int。
但是,在我的数据库中,我真的很想储备一个布尔值。这是我的代码
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方法返回我:
{“ status”:“确定”,“数据”:{“杂项”:{“ beInAnonymousPanel”:“ 0”}}}
而不是:
{“ status”:“确定”,“数据”:{“杂项”:{“ beInAnonymousPanel”:true}}}
我发现了其他一些话题,而且该话题还早于swift3,他们没有好的解决方案。
编辑:我使用swiftyjson
我终于找到了答案,我忘了编码参数:
Alamofire.request(url, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: Api.headers).responseJSON
{ response in.. }
您可以解析它,将int转换为bool并保存或使用它。像这样转换:
let intVar = 1
let boolVar = Bool(intVar as NSNumber)
print(boolVar) // true
这将起作用
var SearchParams= ["id":"123","iSActive": false] as [String : Any]