2017-07-20 46 views
1

我试图从视图控制器2中检索保存在模型文件中的数据,但我得到零。如何从我的项目中的任何View Controller中保存和检索Model类中的数据?如何检索保存在模型类中的数据Swift 3

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 
    } 
} 

在视图控制器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 
} 

在视图控制器2个打印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. 
    } 
} 

回答

2

如果你想保存和检索数据模型类从任何地方。我想你可以使用static/class关键字Model类的属性和方法之前:

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 
    } 
} 

在视图控制器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 
} 

在视图控制器2:

// var model = Model() // Remove this line 

@IBAction func testButton(_ sender: UIButton) { 
    let a = Model.returnGPA() 
} 
+0

@jean:在'Model'类中,如果声明'hourTaken'和'currentGPA'是公共变量,那么为什么我们需要添加'saveGPA','returnGPA'和'saveHoursTaken'函数?为什么不直接访问'hourTaken'和'curentGPA'? –

+0

非常感谢,我会试试! – jean

+0

它也可以使用数组吗?我需要稍后补充。 – jean

相关问题