2016-03-12 109 views
0

我正在創建一個字典來保存一些值,我將作爲參數在發佈請求中發送,但是當我設置一個booelan值(true或false)時,它會將其轉換爲1或0。我怎樣才能設置爲true或false而不是1或0?AnyObject布爾轉換爲int

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

更新:

實際上,問題在於在paramOptions類型。 Bool在技術上不符合AnyObject,因此Bool值被轉換爲數字以存儲爲AnyObject。通常情況下,這不是問題,因爲他們可以自由轉換回Bools。

我不知道這個代碼的範圍更廣(或者它與目標C互操作),但改變你的聲明,以下就解決了問題:

var parameters : Dictionary<String, Any> = Dictionary() 
var paramOptions: Dictionary<String, Any> = Dictionary() 
var arrayOptions = [Dictionary<String, Any>]() 

這裏的問題是該Bool不是AnyObject,所以Bool值自動橋接到NSNumber。布爾是一個任何,但是,並保持更新的類型。

+0

沒有工作,我收到一個警告,說沒有任何效果將Bool轉換爲Bool。 –

+0

我的錯誤;更新了我的答案。 – colavitam

+0

現在的問題是,我在異步請求(使用後)中使用此字典,如果我爲此更改出現此錯誤:無法轉換類型'字典'(又名'字典<字符串,協議<>>' )到期望的參數類型'[String:AnyObject]' –