我正在创建一个字典来保存一些我将在发布请求中作为参数发送的值,但是当我设置 bool 值(true 或 false)时,它会不断将其转换为 1 或 0。我该如何设置这个 true or false 而不是 1 or 0?
var parameters : Dictionary<String, AnyObject> = Dictionary()
var paramOptions: Dictionary<String, AnyObject> = Dictionary()
var arrayOptions = [Dictionary<String, AnyObject>]()
for option in options{
paramOptions["id"] = option.id
paramOptions["response"] = option.selected //boolean value
arrayOptions.append(paramOptions)
}
parameters["reason_details"] = Array(arrayOptions)
Just.post(link, params: parameters) { (r) -> Void in
}
最佳答案
更新:
问题其实出在paramOptions
的类型上。 Bool 在技术上不符合 AnyObject,因此,Bool 值被转换为数字以存储为 AnyObject。通常,这不是问题,因为它们可以自由转换回 Bool。
我不知道这段代码的更广泛范围(或者它必须与 Objective C 互操作的地方),但是将您的声明更改为以下内容可以解决问题:
var parameters : Dictionary<String, Any> = Dictionary()
var paramOptions: Dictionary<String, Any> = Dictionary()
var arrayOptions = [Dictionary<String, Any>]()
这里的问题是 Bool 不是 AnyObject,因此 Bool 值会自动桥接到 NSNumber。但是,Bool 是 Any,并且在更新后的类型中保持不变。
关于ios - AnyObject bool 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953273/