Я развиваюсь Swift5
.Моя проблема в том, что я сейчас отправляю сообщение с сервера в Formdata.Это работает хорошо,
, но это проблема, когда типы данных параметров различны.В настоящее время в качестве параметра принимается только string
. Но на этот раз у нас также есть тип Int
.Это вызывает ошибку.Как мне решить эту проблему?
Моя функция публикации
func post(url: URL, _ parameters: [String: String], encoding: String.Encoding, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) throws {
var postRequest: URLRequest = URLRequest(url: url)
postRequest.httpMethod = "POST"
let makeRandom = { UInt32.random(in: (.min)...(.max)) }
let boundary = String(format: "------------------------%08X%08X", makeRandom(), makeRandom())
let contentType: String = try {
guard let charset = CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(encoding.rawValue)) else {
throw IXError.characterSetName
}
return "multipart/form-data; charset=\(charset); boundary=\(boundary)"
}()
var body = Data()
for (rawName, rawValue) in parameters {
if !body.isEmpty {
body.append("\r\n".data(using: .utf8)!)
}
body.append("--\(boundary)\r\n".data(using: .utf8)!)
guard
rawName.canBeConverted(to: encoding),
let disposition = "Content-Disposition: form-data; name=\"\(rawName)\"\r\n".data(using: encoding) else {
throw IXError.characterSetName
}
body.append(disposition)
body.append("\r\n".data(using: .utf8)!)
guard let value = rawValue.data(using: encoding) else {
throw IXError.characterSetName
}
body.append(value)
}
body.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)
postRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
postRequest.httpBody = body
session.dataTask(with: postRequest, completionHandler: completionHandler).resume()
}
Значение данных для отправки
var dict = [String: String]()
dict["test1"] = "00"
dict["test2"] = "0001"
dict["test3"] = "testing"
dict["test4"] = 1000 // Int32
dict["test5"] = ""
dict["test6"] = 0 // Int32
try globalUrl.post(url: url, dict, encoding: .utf8, completionHandler: { data, response, error in
...
Изменение переменных параметров на Любые приводит ко многим ошибкам.
_ параметры: [Строка: Любая]
Ошибка
Guard letvalue = rawValue.data (using: encoding) else {// Значение типа 'Any' не имеет члена 'data'
Тип отправляемых данных формы
dict["test1"] = String
dict["test2"] = String
dict["test3"] = String
dict["test4"] = Int32
dict["test5"] = String
dict["test6"] = Int32
Как я могу это решить ??
Пожалуйста, дайте мне знать, если у вас есть более простой код.Мне нравится простой код.