`Дополнительный аргумент метода в вызове` в Alamofire - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь отправить следующие данные, используя Alamofire версии 3 и Swift 3. И получаю ошибку Extra argument method in call.Вот что я сделал до сих пор:

struct userGoalServerConnection {
        let WeightsUserGoal_POST = "http://api.umchtech.com:3000/AddWeightsGoal"


    }


struct wieghtsUserGoal {
        let id : Int
        let token : String
        let data : [ String : String ]
    }


    func syncInitialUserGaolValuesWithServer (userID : Int , userToken : String ){
        let serverConnection = userGoalServerConnection()
        let weightValue = wieghtsUserGoal.init(id: userID,
                                               token: userToken,
                                               data: ["weight_initial":"11","weight_end":"11","weight_difference":"11","calories_deficit":"11","difficulties":"11","weight_loss_week":"11","start_date":"2016-12-12","end_date":"2016-12-23","days_needed":"11"])

        Alamofire.request(userGoalServerConnection.WeightsUserGoal_POST, method:.post, parameters: weightValue, encoding: JSONEncoding.default, headers:nil).responseJSON { response in
                print(response.request as Any)  // original URL request
                print(response.response as Any) // URL response
                print(response.result.value as Any)   // result of response serialization
        }

Я совершенно новичок в этом, поэтому, пожалуйста, не возражайте, если мой вопрос немного слишком нуб.Я проходил подобные вопросы здесь, но они не помогли мне понять, где я делаю ошибку :)

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вы можете передать только тип словаря запрос alamofire, вы не можете опубликовать тип структуры.

вы можете отправить [String : String], [String : Any] и т. Д. В запросе Alamofire

Вы можете попробовать этот способ

 let WeightsUserGoal_POST = "http://api.umchtech.com:3000/AddWeightsGoal"




func Serialization(object: AnyObject)  -> String{
    do {
        let stringData = try JSONSerialization.data(withJSONObject: object, options: [])
        if let string = String(data: stringData, encoding: String.Encoding.utf8){
            return string
        }
    }catch _ {

    }
    return "{\"element\":\"jsonError\"}"
}




func syncInitialUserGaolValuesWithServer (userID : Int , userToken : String ){


let data = ["weight_initial":"11","weight_end":"11","weight_difference":"11","calories_deficit":"11","difficulties":"11","weight_loss_week":"11","start_date":"2016-12-12","end_date":"2016-12-23","days_needed":"11"] as! [String : String]
        let dataSerialized = Serialization(object: data as AnyObject)
        let param = ["id" : userID,
                     "token" : userToken,
        "data" : dataSerialized ]


  Alamofire.request(WeightsUserGoal_POST, method: .post, parameters: param ,encoding: JSONEncoding.default, headers: nil).responseJSON { response in
            print(response.request as Any)  // original URL request
            print(response.response as Any) // URL response
            print(response.result.value as Any)   // result of response serialization
        }
    }
0 голосов
/ 31 мая 2018

Вы передаете weightValue как POST параметр в запросе, это не может быть.Если вы используете JSONEncoding, тогда передайте тип объекта Parameters.

let params: Parameters = [
        "Key1": "value1",
        "key2": "value2"
    ]
...