如何解决将数据json传递到swift 5.2 con Alamofire中的另一个控制器
我有一个登录视图,要求输入卡和密码。我咨询了API,如果输入的数据正确,它会向我发送Sub NoSpaces()
Dim w As Range
For Each w In Selection.Cells
w.Value = Replace(w.Value," ",vbNullString)
w.Value = Replace(w.Value,Chr(160),vbNullString)
Next
End Sub
,就像这样。 button方法哪个返回?如何将该数据发送到另一个视图?我住JSON
,上了Alamofire 5.0
类。
Model
类模型
@IBAction func myButtonIngreSaraction(_ sender: Any) {
guard let carnet = self.txtCarnet.text else {return}
guard let contrasena = self.txtPassword.text else {return}
let ingresologinmodel = IngresoLoginModel(usuario: carnet,password: contrasena)
self.apiCall(IngresoLoginModel: ingresologinmodel){
(result) in
switch result{
case .success(let json):
print(json)
**//This is where I want to send that json with the data to the other view. ******
case .failure(let err):
print(err.localizedDescription)
}
}
}
enum ApiErros: Error {
case custom(message : String)
}
typealias Handler = (Swift.Result<Any?,ApiErros>) -> Void
func apiCall(IngresoLoginModel: IngresoLoginModel,completionHandler: @escaping Handler)
{
let header: HTTPHeaders = [
.contentType("application/json")
]
AF.request("https://url/xxxx/api/Login",method: .post,parameters: IngresoLoginModel,encoder: JSONParameterEncoder.default,headers: header).response{ response in
debugPrint(response)
switch response.result{
case .success(let data):
do{
let json = try JSONDecoder().decode([LoginModel].self,from: data!)
print(json)
if response.response?.statusCode == 200{
completionHandler(.success(json))
}else{
completionHandler(.failure(.custom(message: "Por favor verifica tu internet")))
}
}
catch
{
print(error)
completionHandler(.failure(.custom(message: "Problemas")))
}
case .failure(let err):
print(err.localizedDescription)
}
}
}
在这些示例中,这是Api向我发送的json数据更改了
struct LoginModel: Codable {
let idEmpleado: Int
let Nombre: String
let CodEmpleado: String
let password: String
let idPerfil: Int
let activo: Int
let Descripcion: String
let idRegion: Int
let correo: String
}
}
解决方法
许多方法类似于创建一个变量以将该json保存在OtherViewController中并调用self..otherViewController.json = json https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/
,使用didSet
var page = [Datas]() {
didSet {
self.myVariable = page[0].date!
}
}
,
typealias处理程序=(Swift.Result )->无效
@IBAction func myButtonIngresarAction(_ sender:Any){
guard let carnet = self.txtCarnet.text else {return}
guard let contrasena = self.txtPassword.text else {return}
let ingresologinmodel = IngresoLoginModel(usuario: carnet,password: contrasena)
self.apiCall(IngresoLoginModel: ingresologinmodel){
(result) in
switch result{
case .success(let json):
print(json)
//Here is that I do not know how to send it to the other controller all the json
let viewControllerB = HomeMenuViewController()
viewControllerB.datosPersonales = json!
self.navigationController?.pushViewController(viewControllerB,animated: true)
case .failure(let err):
print(err.localizedDescription)
}
}
}
第二个控制器
Class HomeMenuViewController:UIViewController {
@IBOutlet weak var mylabel: UILabel!
var datosPersonales = [LoginModel]()
override func viewDidLoad() {
super.viewDidLoad()
print("***************")
print(datosPersonales)
print("***************")
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。