首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与Json字典中的数组一起使用Alamofire?

如何与Json字典中的数组一起使用Alamofire?
EN

Stack Overflow用户
提问于 2016-09-09 14:57:06
回答 2查看 525关注 0票数 1

为了使用Alamofire执行POST请求,我希望创建一个Json字典,其中包含一个数组(AnyObject类型的元素)作为字典值。

但是,当我将字典定义为[String: AnyObject]并试图保存数组时,它会产生一个SwiftDeferredNSArray

代码语言:javascript
复制
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类型的字典值时,输出就是我所期望的:

代码语言:javascript
复制
var fields = [String: Any]()
fields["key1"] = [1,2,3]
fields["key2"] = "Foo"
print(fields) 

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

不幸的是,Alamofire似乎不接受Any类型的字典值。

代码语言:javascript
复制
Cannot convert value of type '[String : Any]?' to expected argument type '[String : AnyObject]?'

如何用Swift数组处理POST请求时使用Alamofire?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-14 13:56:33

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

由于这也是更新的Swift 3版本的阿拉莫火,SwiftDeferredNSArray不再发生,问题得到了解决。

票数 1
EN

Stack Overflow用户

发布于 2016-10-13 06:14:50

我在Swift 2.2中也遇到了同样的问题

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

编辑:

要回答你的问题,试着

var fields = [NSObject: AnyObject]()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39414475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档