2016-09-09 29 views
1

要使用Alamofire執行POST請求,我想創建一個帶有數組(具有AnyObject類型的元素)的Json字典作爲字典值。如何將Alamofire與Json字典中的數組一起使用?

但是,當我將字典定義爲[String: AnyObject]並嘗試保存數組時,結果爲SwiftDeferredNSArray

var fields = [String: AnyObject]() 
fields["key1"] = [1,2,3] // But this could also be an array of type Array<AnyObject> 
fields["key2"] = "Foo" 
print(fields) 

輸出:"["key1": <_TtCs21_SwiftDeferredNSArray 0x7fdfe9f0c2d0>(\n1,\n2,\n3\n)\n, "key2": Foo]\n"

當字典值類型Any輸出的定義是什麼,我希望是:

var fields = [String: Any]() 
fields["key1"] = [1,2,3] 
fields["key2"] = "Foo" 
print(fields) 

輸出:"["key1": [1, 2, 3], "key2": "Foo"]\n"

不幸的是,Alamofire似乎不接受Any類型的字典值:

Cannot convert value of type '[String : Any]?' to expected argument type '[String : AnyObject]?' 

我應該如何使用帶有Swift數組的POST請求來使用Alamofire?

+0

試圖聲明域字典這樣的'變種欄= [字符串:[INT]()' –

+0

是的,但我希望在接受任何類型的通用方法中使用它,包括數組。因此,預先定義類型是不可能的...... – Taco

+0

在傳遞前字典時是否有錯誤? –

回答

1

儘管我不知道SwiftDeferredNSArray輸出是否是Swift中的錯誤,但在Swift 3中,默認情況下字典值必須爲Any

由於這也在Alamofire的Swift 3版本中更新,SwiftDeferredNSArray不再發生,問題得以解決。

0

我太夫特2.2面臨着同樣的問題

我試圖轉換類型的字典[字符串:AnyObject]到的字典[NSObject的:AnyObject],然後,同時值傳遞給Alamofire轉換的字典回到[String:AnyObject]。這對我有效。嘗試此解決方案。

編輯:

要回答你的問題,嘗試

var fields = [NSObject: AnyObject]()

相關問題