参数添加到Alamofire中的请求时出错

时间:2014-08-13 08:55:00

标签: ios networking parameters swift alamofire

我使用名为Alamofire的新网络库在Swift中执行POST请求。

Alamofire允许您单独构建参数格式并添加它。这是我的请求格式。

{
  "DeviceCredentials": {
    "UniqueId": "sample string 1"
  },
  "Personalnumber": "sample string 1"
}

以下是我的想法。

let parameters = [
    "DeviceCredentials": ["UniqueId": uniqueID],
    "Personalnumber": personalNumber
]

uniqueIDpersonalNumber都是字符串类型。此时我没有收到任何错误,但是当我尝试将其添加到请求时,

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]

1 个答案:

答案 0 :(得分:12)

在你的第一个"参数"你在字典中有混合类型,Swift显然无法找出它的推断类型。您可以使用类型注释来解决此问题:

let parameters : [ String : AnyObject] = [
    "DeviceCredentials": ["UniqueId": uniqueID],
    "Personalnumber": personalNumber
]

在你的第二本词典中," para",所有类型都是相同的,类型推断成功。