我使用名为Alamofire的新网络库在Swift中执行POST请求。
Alamofire允许您单独构建参数格式并添加它。这是我的请求格式。
{
"DeviceCredentials": {
"UniqueId": "sample string 1"
},
"Personalnumber": "sample string 1"
}
以下是我的想法。
let parameters = [
"DeviceCredentials": ["UniqueId": uniqueID],
"Personalnumber": personalNumber
]
uniqueID
和personalNumber
都是字符串类型。此时我没有收到任何错误,但是当我尝试将其添加到请求时,
Alamofire.request(.POST, "https://www.example.com/api/", parameters: parameters, encoding: .JSON(options: nil)).responseJSON { (request, response, JSON, error) -> Void in
println(JSON!)
}
我在parameters
参数'字符串'上收到此错误与' NSObject' 不相同。
我的格式有问题或这是一个错误吗?
由于
编辑:我发现用{(1 {}})之类的整数替换uniqueID
可以消除错误。但我尝试了另一种格式作为测试,我在下面列出并编译没有任何错误!
["UniqueId", 1]
答案 0 :(得分:12)
在你的第一个"参数"你在字典中有混合类型,Swift显然无法找出它的推断类型。您可以使用类型注释来解决此问题:
let parameters : [ String : AnyObject] = [
"DeviceCredentials": ["UniqueId": uniqueID],
"Personalnumber": personalNumber
]
在你的第二本词典中," para",所有类型都是相同的,类型推断成功。