Ich habe eine Users-Klasse und eine Login-Klasse (in separaten Dateien), in denen Daten initialisiert und zuerst in der Login-Klasse abgerufen und dann in der Klasse Users für zukünftige Verwendung in anderen Klassen gespeichert werden. Um die Variablen aus der Users-Klasse zu verwenden, muss ich sie ständig initialisieren, wodurch die Werte in der Klasse zurückgesetzt werden. Wie kann ich Variablen erhalten, ohne ständig zu initialisieren?Ordnungsgemäße Methode zum Speichern und Weiterleiten von Daten zwischen Klassen
Was es jetzt ist:
Daten werden in Login.swift empfangen -> Daten zu Users.swift geben wird -> kann nicht in Users.swift
in ViewController.swift gespeicherten Daten anzuzeigenWas ich suche:
Daten werden in Login.swift empfangen -> Daten an Users.swift weitergegeben -> gespeicherten Anzeigedaten in Users.swift in ViewController.swift
-Code in 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.
}
}
-Code in 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.")
}
}
}
}
-Code in 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
}
required init?(Name: String?, Email: String?, Id: String?, ProfilePicture: String?, Username: String?) {
particulars += ["\(Name)"]
particulars += ["\(Email)"]
particulars += ["\(Id)"]
particulars += ["\(ProfilePicture)"]
particulars += ["\(Username)"]
}
}