微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据json传递到swift 5.2 con Alamofire中的另一个控制器

如何解决将数据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 举报,一经查实,本站将立刻删除。