Reputation: 697
I am trying to retrieve data saved in the Model file from View Controller 2, but I'm getting zeroes. How can I save and retrieve data in Model class from any View Controller in my project?
Model.swift:
class Model {
var hoursTaken = 0.0
var currentGPA = 0.0
//var classArray: [String]
func saveGPA(GPA: Double) {
currentGPA = GPA
}
func returnGPA() -> Double {
return currentGPA
}
func saveHoursTaken(HoursTaken: Double) {
hoursTaken = HoursTaken
}
}
In View Controller 1:
var model = Model()
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1 {
let hourstaken = Double(choices[row])
print(hourstaken!)
hoursTakenText.text = choices[row]
model.saveHoursTaken(HoursTaken: hourstaken!)
//print(model.hoursTaken)
}
else if row < 12 {
let currentGPA = Double(choices2[row])
print(currentGPA!)
model.saveGPA(GPA: currentGPA!)
GPATextField.text = choices2[row]
}
subView.isHidden = true
subview2.isHidden = true
}
In View Controller 2 prints 0.0:
import Foundation
import UIKit
class ThirdViewController: UIViewController {
var model = Model()
@IBAction func testButton(_ sender: UIButton) {
print("Test Button Pressed")
let a = model.returnGPA()//prints 0.0
print(a)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Upvotes: 1
Views: 2991
Reputation: 2118
If you want to save and retrieve data in Model class from anywhere. I think you can use static
/class
keyword before properties and methods in Model class:
class Model {
static var hoursTaken = 0.0
static var currentGPA = 0.0
class func saveGPA(GPA: Double) {
currentGPA = GPA
}
class func returnGPA() -> Double {
return currentGPA
}
class func saveHoursTaken(HoursTaken: Double) {
hoursTaken = HoursTaken
}
}
In View Controller 1:
// var model = Model() // Remove this line
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1 {
let hourstaken = Double(choices[row])
hoursTakenText.text = choices[row]
Model.saveHoursTaken(HoursTaken: hourstaken!)
} else if row < 12 {
let currentGPA = Double(choices2[row])
GPATextField.text = choices2[row]
Model.saveGPA(GPA: currentGPA!)
}
subView.isHidden = true
subview2.isHidden = true
}
In View Controller 2:
// var model = Model() // Remove this line
@IBAction func testButton(_ sender: UIButton) {
let a = Model.returnGPA()
}
Upvotes: 2