2016-05-27 37 views
0

我試圖發送一個POST請求參數在以下格式的數組:Alamofire:問題發送陣列參數

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

我試圖包裝我的數組,但我拋出這個錯誤:

Contextual type 'Array' (aka 'Array>') cannot be used with dictionary literal

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

    } 

array in parameter error

回答

0

你寫

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