Swift 与 WHMCS 互动 API
Swift interacting with WHMCS API
我正在开发一个 Swift 应用来与我的 WHMCS API 软件交互,目前 运行 正在生产服务器中。但是我在尝试捕获并执行 json 解码时遇到此调试错误消息:
keyNotFound(CodingKeys(stringValue: "userid", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"userid\", intValue: nil) (\"userid\").", underlyingError: nil))
涉及的代码为:
import Foundation
class NetworkManager {
@Published var posts = [Results]()
var privatedata = Credentials()
func fetchData(email: String, password2:String, action: String) {
switch action {
case "ValidateLogin":
if let url = URL(string: "https://XXXXXX.server/includes/api.php?action=\(action)?email=\(email)&password2=\(password2)&username=\(privatedata.api_id)&password=\(privatedata.api_secret)&responsetype=json") {
let session = URLSession(configuration: .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: \(String(describing: error))")}
}
task.resume()
}
default:
print("Error in switch statement")
}
}
}
知道如何制作这个 运行 吗?提前致谢
很可能您在 PostData
模型中定义了一个 userid
属性:
struct PostData: Codable {
var userid: Int
}
显然此 属性 不存在于您的回复 JSON 中或具有 null
值。
也许你应该将这个 属性 定义为一个可选的,如下所示:
struct PostData: Codable {
var userid: Int?
}
我正在开发一个 Swift 应用来与我的 WHMCS API 软件交互,目前 运行 正在生产服务器中。但是我在尝试捕获并执行 json 解码时遇到此调试错误消息:
keyNotFound(CodingKeys(stringValue: "userid", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"userid\", intValue: nil) (\"userid\").", underlyingError: nil))
涉及的代码为:
import Foundation
class NetworkManager {
@Published var posts = [Results]()
var privatedata = Credentials()
func fetchData(email: String, password2:String, action: String) {
switch action {
case "ValidateLogin":
if let url = URL(string: "https://XXXXXX.server/includes/api.php?action=\(action)?email=\(email)&password2=\(password2)&username=\(privatedata.api_id)&password=\(privatedata.api_secret)&responsetype=json") {
let session = URLSession(configuration: .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: \(String(describing: error))")}
}
task.resume()
}
default:
print("Error in switch statement")
}
}
}
知道如何制作这个 运行 吗?提前致谢
很可能您在 PostData
模型中定义了一个 userid
属性:
struct PostData: Codable {
var userid: Int
}
显然此 属性 不存在于您的回复 JSON 中或具有 null
值。
也许你应该将这个 属性 定义为一个可选的,如下所示:
struct PostData: Codable {
var userid: Int?
}