, Swift 4, как я могу передать Decodable Struct
в параметрах метода и проанализировать его в JSONDecoder()
? ошибка:
Невозможно вызвать «декодирование» со списком аргументов типа «(Декодируемый, из: данных)»
struct JsonRespons: Codable {
let uid: String
let msisdn: String
let APK: String
let fname: String
let lname: String
}
struct JsonResponsError: Decodable {
let uid: String
let error: String
}
extension UIView {
func phoneAuth(serverApi path:String, jsonStruct:Codable){
let jsonUrlString = Globals.JOSN_API_URL + path
guard let url = URL(string: jsonUrlString) else {
return
}
URLSession.shared.dataTask(with: url) { (data, response, err) in
guard err == nil else {
return
}
guard let data = data else { return }
do {
let result = try JSONDecoder().decode(jsonStruct.self, from: data)
self.handleJsonResult(resalt: result as AnyObject)
} catch let jsonErr {
print("Error serializing json:", jsonErr)
}
}.resume()
}
func handleJsonResult(resalt:AnyObject){
print(resalt)
}
}
Decodable
типа, а затем декодировать некоторые данные в новый экземпляр на основе динамического типа исходного экземпляра. Но почему именно вы этого хотите? Как вы планируете использоватьresult
после этого? - person Hamish   schedule 07.12.2017let result = try JSONDecoder().decode(jsonStruct.self, from: data)
наlet result = try JSONDecoder().decode(JsonRespons.self, from: data)
Дайте мне знать, что это работает - person Prashant Tukadiya   schedule 07.12.2017phoneAuth("https://MY_API", JsonRespons.self)
- person Hattori Hanzō   schedule 07.12.2017Codable
, вам нужен общий заполнительT : Decodable
и параметрT.Type
. - person Hamish   schedule 07.12.2017phoneAuth
и, как @Hamish Said, обновите этот метод с общим параметром, это легко для вас. И, пожалуйста, обновите свои вопросы соответственно. если возможно - person Prashant Tukadiya   schedule 07.12.2017