AnyObject bool转换为int

时间:2016-03-12 03:06:27

标签: ios swift mobile

我正在创建一个Dictionary来保存一些我将在post请求中作为参数发送的值,但是当我设置booelan值(true或false)时,它会将其转换为1或0.如何设置为make这个真或假而不是1或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

    }

1 个答案:

答案 0 :(得分:1)

更新

问题实际上在于SCORES_SIZE的类型。 Bool在技术上不符合AnyObject,因此,Bool值被转换为数字以存储为AnyObject。通常情况下,这不是问题,因为它们可以自由转换回Bools。

我不知道此代码的更广泛范围(或者它必须与目标C互操作的地方),但将声明更改为以下内容可以解决问题:

for(i = 0; i < SCORES_SIZE - 1; i++){
    newScores[i] = oldScores[i + 1];
}
newScores[SCORES_SIZE - 1] = oldScores[0]; // set first element of "oldScores" to last element of "newScores"

这里的问题是Bool不是AnyObject,因此Bool值会自动桥接到NSNumber。但是,Bool是一个Any,并且在更新后的类型中保持不变。