我正在尝试查询一个 Web 服务,该服务会报告数据库中是否存在某个值。我可以在控制台中打印响应,但无法将其保存到可以在代码中其他地方使用的变量中。 如果该值存在,则响应将为 JSON 格式;如果不存在,则该值将为 null。 我有另一个功能来检查用户是否获得批准,然后继续或断开连接。 帮助:/
func ApprovedQuery(Quser: String){
let Url = String(format: LogUserCheck)
guard let serviceUrl = URL(string: Url) else { return }
let postString = "user=" + Quser
var request = URLRequest(url: serviceUrl)
request.httpMethod = "POST"
let httpBody = postString.data(using: String.Encoding.utf8)
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
//if let response = response {
//print(response)
//}
do {
guard let info = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] else {
//print("User Not Approved")
return
}
//print("User Approved")
return
} catch {
print(error)
}
} .resume()
}
我尝试过使用结构体和变量,但它总是打印空白,而我在另一个函数中打印变量。 我还尝试将字符串(响应)从原始函数返回到另一个保存值但仍然为空的函数...
最佳答案
这听起来像是单例的可能用例。您可以创建一个 session 管理器类,并将需要保留的值附加到其中。它看起来像这样:
class YourSingleton {
static let sharedInstance = YourSingleton()
private init() {}
var isApproved: Bool = false
}
更新方法如下:
YourSingleton.sharedInstance.isApproved = true
您可以阅读有关单例模式的更多信息 here 。有些人对这种模式有强烈的看法。就我个人而言,我并不关心它,但如果不了解更多关于您的应用程序的架构以及您想要做什么,我无法提供替代方案。
关于MacOS 上的 Swift - 如何将 PHP post 函数的响应保存到全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350638/