Alamofire: проблема отправки массива в параметре

Я пытаюсь отправить массив в параметре POST request в следующем формате:

{  "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)
        }

    }

массив в ошибке параметра

1 ответ

  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
            ]
        ]
    ]