嘿,下面有我的源代码。 我想做的是:
提取Json之后,我希望它可以在其他视图中访问... 请帮助我...
我的意思是提取的值:“ \ n(用户名)”
所以我只想将响应数据放到另一个视图中...
struct User: Codable {
let Name: String
}
let url = URL(string: "http://192.168.178.26/iso/loginserv.php")
guard let requestUrl = url else { fatalError() }
var request = URLRequest(url: requestUrl)
request.httpMethod = "POST"
let postString = "user=\(self.user)&pass=\(self.pass)";
request.httpBody = postString.data(using: String.Encoding.utf8);
let task = URLSession.shared.dataTask(with: request) {
(data, response, error) in
if let error = error {
print("Error took place \(error)")
return
}
guard let data = data else {return}
do{
let users = try JSONDecoder().decode(User.self, from: data)
print("Response data Name: \n \(users.Name)")
if !(data.isEmpty) {
self.signedIn = true
}
}catch let jsonErr{
print(jsonErr)
}
}
task.resume()
答案 0 :(得分:1)
您可以使用Singleton设计模式。
基本上,您创建一个仅具有全局静态属性的实例一次。该属性将用于将信息从一个视图传递到另一个视图。
因此,首先创建一个Singleton类(作为简单的Swift文件)并定义一个静态实例,如下所示:
class Singleton {
static let instance = Singleton()
private init() {
}
}
现在,创建并初始化要在视图之间共享的变量,例如字符串name
:
class Singleton {
static let instance = Singleton()
private init() {
}
var name = ""
}
现在,在您的代码中,为其赋予属性users.Name
:
do{
let users = try JSONDecoder().decode(User.self, from: data)
print("Response data Name: \n \(users.Name)")
Singleton.instance.name = users.Name
if !(data.isEmpty) {
self.signedIn = true
}
}catch let jsonErr{
print(jsonErr)
}
现在,要在其他视图中访问此信息,只需使用Singleton.instance.name
。
答案 1 :(得分:0)
使用这样的结构
struct structFittings {
static var collectedWorks: Bool = false
static var collected: String = "notcollected"
static var failclicked: Bool = false
}
这样访问
structFittings.collectedWorks
应用程序中的任何地方