【发布时间】:2017-01-17 18:37:10
【问题描述】:
要使用 Alamofire 执行 POST 请求,我想创建一个 Json 字典,其中包含一个数组(具有 AnyObject 类型的元素)作为字典值。
但是,当我将字典定义为 [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?
【问题讨论】:
-
尝试像这样声明字段字典
var fields = [String: [Int]]() -
是的,但我想在接受任何类型(包括数组)的通用方法中使用它。所以,无法提前定义类型……
-
您在传递以前的字典时是否遇到任何错误?
-
没有理由不这样做,但在我的情况下,数组将是
Array<AnyObject>类型,并且由于字典中有许多不同的值类型,最好不要向下转换。
标签: ios json swift dictionary alamofire