Forma adecuada de almacenar y pasar datos entre classs

Tengo una class de usuarios y una class de inicio de session (en files separados) donde los datos se inicializan y obtienen primero en la class de inicio de session y luego se almacenan en la class de usuarios para su uso futuro en otras classs. Para hacer uso de las variables de la class Usuarios, parece que tengo que inicializar constantemente que restablece los valores de la class. ¿Cómo puedo get variables sin inicializar constantemente?

Lo que es ahora mismo:

Los datos se reciben en Login.swift -> Los datos se pasan a Users.swift -> No se pueden mostrar los datos almacenados en Users.swift en ViewController.swift

Lo que estoy buscando:

Los datos se reciben en Login.swift -> Los datos se pasan a Users.swift -> Mostrar datos almacenados en Users.swift en ViewController.swift

Código en ViewController

import UIKit class ViewController: UIViewController { @IBOutlet weak var usernameLabel: UILabel! // var usernameLabelText = String() let dataObj = Users(Name: "", Email: "", Id: "", ProfilePicture: "", Username: "") var usernameLabelText: String? { return String(dataObj!.username) } override func viewDidLoad() { usernameLabel.text = "Welcome \(usernameLabelText)" print("This is the \(dataObj!.username)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

Código en Login.swift

 import Foundation import Alamofire import SwiftyJSON class Login { var userName:String! var passWord:String! init(userName : String, passWord : String) { let parameters = [ "username": userName, "password": passWord ] Alamofire.request(.POST, "http://anyapi.com", parameters: parameters) .responseJSON { response in print(response.request) print(response.response) print(response.data) print(response.result) if let result = response.result.value { print("Did receive JSON data: \(result)") let value = JSON(result) if let api_key = value["api_token"].string { print("The token is " + api_key) } else{ print("error parsing api token") } //pass data to Users class _ = Users.init(Name: value["name"].string, Email: value["email"].string, Id: value["id"].string, ProfilePicture: value["profile_picture"].string, Username: value["username"].string) } else { print("JSON data is nil.") } } } } 

Código en Users.swift

 import Foundation import Alamofire import SwiftyJSON class Users { private var _name: String! private var _email: String! private var _userId: String! private var _profilePicture: String! private var _username: String! var particulars: [String] = [] var name: String { _name = particulars[0] return _name } var email: String { _email = particulars[1] return _email } var userId: String { _userId = particulars[2] return _userId } var profilePicture: String { _profilePicture = particulars[3] return _profilePicture } var username: String { _username = particulars[4] return _username } requinetworking init?(Name: String?, Email: String?, Id: String?, ProfilePicture: String?, Username: String?) { particulars += ["\(Name)"] particulars += ["\(Email)"] particulars += ["\(Id)"] particulars += ["\(ProfilePicture)"] particulars += ["\(Username)"] } } 

  1. Cree una variable de tipo de usuario en View Controller.

     var usrData : Users? 
  2. Cuando crea una instancia de View Controller, asigne la variable a la class de usuario ya inicializada.

     let view_controller_to_present = blahblah as! View Controller;<br> view_controller_to_present.usrData = DataFromRequest;<br> presentViewController(_ viewControllerToPresent: view_controller_to_present,animated flag: true, completion completion: nil); 
  3. Accede a los datos.

Hay mucho que decir …

Acerca del almacenamiento: sus datos aún no se han almacenado. Puede usar Core Data para perseguirlos o NSUserDefault para una solución más ligera (este último no persistirá en los datos después de la muerte de la aplicación), o incluso files.

Acerca de pasar datos de una vista a otra: podría anular la function prepareForSegue, o usar el protocolo y delegar el patrón.