2016-09-09 30 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]()

相关问题