multi-form-data в moya со значением int в swift - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь отправить данные формы с пост-запросом в API с помощью моего.Я искал переполнение стека и нашел некоторые вопросы, которые были похожи на мои, но я получаю сообщение об ошибке, которое я опубликую ниже. Это и Это - это две ссылки, которые я прочитал для моей проблемы [! [ Это ключи, которые я должен отправить ] [3]][3]

Невозможно преобразовать значение типа 'Int' в ожидаемый тип аргумента 'Данные'

, даже я попробовал код ниже:

 let memberIdData = memberID.data(using: String.Encoding.utf8) ?? Data()




let data = ["id":0,
                    "AddressLine":EntAddressLine.text,
                    "CityId":selectedCity,
                    "Mobile":EntMobile.text,
                    "PostalCode":EntPostalCode.text,
                    "ProvinceId":selectedProvince,
                    "Tel":EntTelephone.text] as [String : Any]

как именно это исправить

ОБНОВЛЕНИЕ:

    case .AddAddress(let data):
            var multipartData = [MultipartFormData]()
            for (key, value) in params! {
                let Provience = MultipartFormData.init(provider: .data("\(data)".data(using: String.Encoding.utf8)!), name: "id")

                multipartData.append(Provience)
            }
            return .uploadMultipart(multipartData)

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

ничего особенного вы не должны делать !!!

public var task: Task {
    switch self {

    case .AddAddress(let data):
        return .requestParameters(parameters: data, encoding: URLEncoding.default)

    }

    }

попробуйте, это должно помочь

0 голосов
/ 25 сентября 2018

Составные данные формы не могут иметь другие типы, кроме данных.Поэтому было бы лучше сохранить словарь с типом [String: String] и преобразовать его в данные.
Пример:

var task: Task {
    case .... {
        let params: [String:String] = ["id":"0", //convert to string
                                       "AddressLine":EntAddressLine.text,
                                       "CityId":"\(selectedCity)",  //convert to string
                                       "Mobile":EntMobile.text,
                                       "PostalCode":EntPostalCode.text,
                                       "ProvinceId":"\(selectedProvince)",//convert to string
                                       "Tel":EntTelephone.text]

        var multipartData = [MultipartFormData]()
        for (key, value) in params {
            let formData = MultipartFormData(provider: .data(value.data(using: .utf8)!), name: key)
            multipartData.append(formData)
        }

        return .uploadMultipart(multipartData)
    }
    ....
}    

===============
РЕДАКТИРОВАТЬ:

Для запросов не из нескольких частей:

var task: Task {
        case .... {
            let params: [String:Any] = ["id":0,
                                        "AddressLine":EntAddressLine.text,
                                        "CityId":selectedCity,
                                        "Mobile":EntMobile.text,
                                        "PostalCode":EntPostalCode.text,
                                        "ProvinceId":selectedProvince,
                                        "Tel":EntTelephone.text]

            return .requestParameters(parameters: param, encoding: JSONEncoding.default)
        }
        ....
}

var headers: [String : String]? {
    return ["Content-Type":"application/json"]
}
...