Как передать Encodeable или Decodeable в качестве параметра в Swift 4?IOS

Программируем под IOS
Ответить
Anonymous
 Как передать Encodeable или Decodeable в качестве параметра в Swift 4?

Сообщение Anonymous »

Я изучаю JSONParsing. Я следовал инструкциям и получил следующее:

Код: Выделить всё

guard let url = URL(string: "http://localhost/test-api/public/api/register") else { return }
var request  = URLRequest(url: url)
request.httpMethod = "POST"
let newUser = User.init(name: self.collectionTF[0].text, email: self.collectionTF[1].text, password: self.collectionTF[2].text)
do {
let jsonBody = try JSONEncoder().encode(newUser)
request.httpBody = jsonBody
} catch { }
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else { return }
do {
let json = try JSONSerialization.jsonObject(with: data) as? [String:Any]
print(json!)
DispatchQueue.main.async {
if json!["status"] as! Int == 200
{
GeneralHelper.shared.keepLoggedIn()
NavigationHelper.shared.moveToHome(fromVC: self)
}
}
} catch { print(error.localizedDescription)}
}.resume()
Хорошо, вот что я сделал для регистрации. Теперь я хочу создать помощника, который будет делать то же самое с @escaping, поскольку взамен нам всем нужен разобранный JSON.
Итак, Я передаю endPoint как строку, а затем пытаюсь передать этого newUser, который является Encodable, в будущем он также может быть Decodable, но выдает ошибку. Невозможно вызвать 'encode' ' со списком аргументов типа '(Codable)'. Кто-нибудь может помочь? И лучше ли так, вызывая эту функцию несколько раз, когда дело доходит до JSONParsing?
Изменить: - Итак, теперь я использую функцию networkRequest и вот что я сделал.

Код: Выделить всё

 let newData = User.init(name: "Rob", email: "abc@gmail.com", password: "12345678")

ApiHelper.sharedInstance.networkRequest_Post(urlString: "register", header: nil, encodingData: newData) { (response: User, urlRes, error) in
 }
Теперь выдает следующую ошибку:

Невозможно преобразовать значение типа '(User, _, ) -> ()' к ожидаемому типу аргумента '(?, HTTPURLResponse?, Ошибка?) -> ()'.

Любая помощь?

Подробнее здесь: https://stackoverflow.com/questions/530 ... in-swift-4
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»