2017-07-23 58 views
6

mam paramter ciało POST tak:Heterogeneous collection literal można wywnioskować tylko na "[String: Any]"; dodać wyraźny typ adnotacji, jeśli jest to celowe

{ 
    "id": 0, 
    "name": "string", 
    "contactInfo": "string", 
    "message": "string" 
} 

Więc odkąd używam Alamofire do wysyłania parametrów opisuję słownika ciała po tak:

let body = ["id": userID, "name": userName, "contactInfo": contactInfo, "message": message] 

class func postUserFeedback(userID: Int, userName: String, contactInfo: String, message: String,completionHandler: @escaping (FeedbackResponse?) -> Void) { 
    let body = ["id": userID, "name": userName, "contactInfo": contactInfo, "message": message] 
    request(route: .userFeedback, body: body).responseObject { (response: DataResponse<FeedbackResponse>) in 

     response.result.ifSuccess({ 
     completionHandler(response.result.value) 
     }) 

     response.result.ifFailure { 
     completionHandler(nil) 
     } 
    } 

    } 

ale otrzymuję błąd tak: Error screenshot

Co robię źle w tej składni?

Odpowiedz

9

Jeśli typ nie można wywnioskować trzeba go opisywać:

let body : [String:Any] = ["id": userID, "name": userName, "contactInfo": contactInfo, "message": message] 
2

Powinieneś dodać typ jawny [String: Any] do zmiennej.

let body = ["id": userID, 
      "name": userName, 
      "contactInfo": contactInfo, 
      "message": message] as [String: Any]