Быстрое взаимодействие с WHMCS API

#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?
}