【问题标题】:Alamofire: Issue sending array in parameterAlamofire:在参数中发送数组
【发布时间】:2023-06-05 03:04:01
【问题描述】:

我正在尝试以以下格式在 POST 请求参数中发送一个数组:

{  "ratings": [{
   "safety_rating_id": 105,
   "schedule_job_id": 18,
   "score": 9,
   "submission_id": 27
}, 
{
   "safety_rating_id": 105,
   "schedule_job_id": 18,
   "score": 9,
   "submission_id": 27
}]
}

我试图包装我的数组,但我被抛出了这个错误:

上下文类型'Array'(又名'Array>')不能与字典文字一起使用

POST 请求代码:

 let comments: Array<[String:AnyObject]> = [
        "ratings" : [
                [
                    "safety_rating_id" : 106,
                    "schedule_job_id" : 18,
                    "score" : 10,
                    "submission_id" : 27
                ],
                [
                    "safety_rating_id" : 105,
                    "schedule_job_id" : 18,
                    "score" : 9,
                    "submission_id" : 27
                ]
            ]
    ]
Alamofire.request(.POST, endPoint, headers: Auth_header, parameters: comments)
        .validate()
        .responseData {
        response in

        switch response.result {
        case .Success(let data):
            let json = JSON(data)
            print(json)
            onCompletion()
        case .Failure(let error):
            print("Request failed with error: \(error)")
            onError?(error)
        }

    }

【问题讨论】:

    标签: ios arrays swift2 alamofire


    【解决方案1】:

    你写

    let comments: Array<[String:AnyObject]> 
    

    但是您放入的内容是字典,而不是数组。

    comments的签名改为简单的字典:

    let comments: [String:AnyObject] = [
        "ratings" : [
            [
                "safety_rating_id" : 106,
                "schedule_job_id" : 18,
                "score" : 10,
                "submission_id" : 27
            ],
            [
                "safety_rating_id" : 105,
                "schedule_job_id" : 18,
                "score" : 9,
                "submission_id" : 27
            ]
        ]
    ]
    

    或者,如果您需要完整类型:

    let comments: [String:[[String:Int]]] = [
        "ratings" : [
            [
                "safety_rating_id" : 106,
                "schedule_job_id" : 18,
                "score" : 10,
                "submission_id" : 27
            ],
            [
                "safety_rating_id" : 105,
                "schedule_job_id" : 18,
                "score" : 9,
                "submission_id" : 27
            ]
        ]
    ]
    

    【讨论】: