如何在Json字典中使用带有数组的Alamofire?

时间:2016-09-09 14:57:07

标签: ios json swift dictionary alamofire

要使用Alamofire执行POST请求,我想创建一个带有数组(包含AnyObject类型的元素)的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]?'

如何将Alamofire与Swift阵列的POST请求一起使用?

2 个答案:

答案 0 :(得分:1)

虽然我不知道SwiftDeferredNSArray输出是否是Swift中的错误,但在Swift 3中,默认情况下字典值必须为Any

由于这也在Alamofire的Swift 3版本中更新,SwiftDeferredNSArray不再出现,问题也解决了。

答案 1 :(得分:0)

我在Swift 2.2中也面临同样的问题

我尝试将[String:AnyObject]类型的字典转换为[NSObject:AnyObject]的字典,然后将值传递给Alamofire,将字典转换回[String:AnyObject]。这对我有用。试试这个解决方案。

编辑:

要回答您的问题,请尝试

$(document).on('click', '.delete', function(){ console.log('here'); $(this).closest('tr').remove(); })