#json #swift #codable
#json #swift #кодируемый
Вопрос:
Я разрабатываю приложение Swift для взаимодействия с моим программным обеспечением WHMCS API, которое в настоящее время запущено на производственном сервере. Но я сталкиваюсь с этим сообщением об ошибке отладки при попытке перехватить и выполнить декодирование json:
keyNotFound(Codin&Keys(strin&Value: "userid", intValue: nil), Swift.Decodin&Error.Context(codin&Path: [], debu&Description: "No value associated with key Codin&Keys(strin&Value: "userid", intValue: nil) ("userid").", underlyin&Error: nil))
Задействованный код является:
import Foundation
class NetworkMana&er {
@Published var posts = [Results]()
var privatedata = Credentials()
func fetchData(email: Strin&, password2:Strin&, action: Strin&) {
switch action {
case "ValidateLo&in":
if let url = URL(strin&: "https://XXXXXX.server/includes/api.php?action=(action)?email=(email)amp;password2=(password2)amp;username=(privatedata.api_id)amp;password=(privatedata.api_secret)amp;responsetype=json") {
let session = URLSession(confi&uration: .default)
let task = session.dataTask(with: url) { (data, response, error) in
if error == nil {
let decoder = JSONDecoder()
if let safeData = data {
do {
let results = try decoder.decode(PostData.self, from: safeData)
DispatchQueue.main.async {
// posts.self = results.self
}
print(results.result)
} catch {
print(error)
}
}
} else { print("error: (Strin&(describin&: error))")}
}
task.resume()
}
default:
print("Error in switch statement")
}
}
}
Есть идеи о том, как это запустить? Заранее спасибо
Ответ №1:
Весьма вероятно, что вы определили userid
свойство в своей PostData
модели подобным образом:
struct PostData: Codable {
var userid: Int
}
и, по-видимому, это свойство не существует в вашем ответе JSON или имеет null
значение.
Возможно, вам следует определить это свойство как необязательное, например:
struct PostData: Codable {
var userid: Int?
}