ios - AnyObject bool 转换为 int

标签 ios swift mobile

我正在创建一个字典来保存一些我将在发布请求中作为参数发送的值,但是当我设置 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/

相关文章:

ios - 从值中获取枚举

ios - Xcode 5,xib本地化导致手机黑屏

json - 使用 Swift 获取 Json 元素

ios - 从 Swift 4 的文件目录中删除用户选择的文件?

Swift - UIAlert 在 UICollectionViewCell 中不起作用

jquery - javascript回调问题

css - 我们的移动网站不会垂直滚动

ios - 即使发送(消息)成功,通知也未到达 iOS 设备

javascript - 如何识别移动设备中的地址栏?

ios - 将 Safari Web Inspector 与为生产编译的应用程序一起使用