URL 中的 Bool 编码参数在 Swift3 中使用 Alamofire 编码为 0 和 1
Bool in URL encoded parameters encodes as 0 and 1 with Alamofire in Swift3
我将 alamofire 与 put 方法一起使用,用于发送 bool 值,但是当我尝试打印请求的 return 时,它从 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 方法return 我:
{
"status" : "ok",
"data" : {
"misc" : {
"beInAnonymousPanel" : "0"
}
}
}
而不是:
{
"status" : "ok",
"data" : {
"misc" : {
"beInAnonymousPanel" : true
}
}
}
我找到了一些其他主题,而且是在 swift3 之前,他们没有很好的解决方案。
编辑:我使用 swiftyjson
你可以解析它,将int转换为bool并保存或使用它。
像这样转换:
let intVar = 1
let boolVar = Bool(intVar as NSNumber)
print(boolVar) // true
我终于找到答案了,我忘了编码我的参数:
Alamofire.request(url, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: Api.headers).responseJSON
{ response in.. }
如果您使用 alamofire 发出请求并将 URLEncoding 用于编码器,则使用 String(Variable) 将 bool 转换为 String,但如果您使用 JSONEncoding,则什么都不做
我将 alamofire 与 put 方法一起使用,用于发送 bool 值,但是当我尝试打印请求的 return 时,它从 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 方法return 我:
{ "status" : "ok", "data" : { "misc" : { "beInAnonymousPanel" : "0" } } }
而不是:
{ "status" : "ok", "data" : { "misc" : { "beInAnonymousPanel" : true } } }
我找到了一些其他主题,而且是在 swift3 之前,他们没有很好的解决方案。
编辑:我使用 swiftyjson
你可以解析它,将int转换为bool并保存或使用它。 像这样转换:
let intVar = 1
let boolVar = Bool(intVar as NSNumber)
print(boolVar) // true
我终于找到答案了,我忘了编码我的参数:
Alamofire.request(url, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: Api.headers).responseJSON
{ response in.. }
如果您使用 alamofire 发出请求并将 URLEncoding 用于编码器,则使用 String(Variable) 将 bool 转换为 String,但如果您使用 JSONEncoding,则什么都不做