【问题标题】:Error with parameters adding to the request in Alamofire将参数添加到 Alamofire 中的请求时出错
【发布时间】:2014-10-06 13:36:38
【问题描述】:

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

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

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

下面是我想出的。

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

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

Alamofire.request(.POST, "https://www.example.com/api/", parameters: parameters, encoding: .JSON(options: nil)).responseJSON { (request, response, JSON, error) -> Void in
    println(JSON!)
}

我在parameters 参数处收到此错误,'String' 与 'NSObject' 不同

我的格式有问题还是这是一个错误?

谢谢

编辑:我发现用整数 (["UniqueId", 1]) 替换 uniqueID 可以消除错误。但我尝试了另一种格式作为我在下面列出的测试,它编译没有任何错误!

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

【问题讨论】:

    标签: ios networking parameters swift alamofire


    【解决方案1】:

    在您的第一个“参数”示例中,您在字典中混合了类型,而 Swift 显然无法为其推断出类型。您可以使用类型注释来解决此问题:

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

    在您的第二个字典“paras”中,所有类型都相等并且类型推断成功。

    【讨论】:

    • 以下 json 对我不起作用,任何帮助都会很棒让 body: Parameters = [ "test_id": 1, "student_id": 1, "delayed_mins": 10 ]
    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多