如何使用UserDefaults来控制自定义对象

时间:2018-01-03 18:13:34

标签: ios swift nsuserdefaults nscoding

我正在尝试制作2个类,一个Globals类和一个Calibration类,以便在整个应用运行时记住一个校准对象。换句话说,将初始化Calibration()并初始化Globals()以在任何视图控制器中调用Calibration对象。它们都将在HomepageController的viewDidLoad()中初始化。 这是我的Globals课程:

class Globals: NSObject, NSCoding {
var aCalValue: Double;
var bCalValue: Double;
var cCalValue: Double;

required init (aValue: Double, bValue: Double, cValue: Double) {
    aCalValue = aValue;
    bCalValue = bValue;
    cCalValue = cValue;

    super.init()
}

required init?(coder aDecoder: NSCoder) {
    aCalValue = aDecoder.decodeObject(forKey: "aValue") as! Double
    bCalValue = aDecoder.decodeObject(forKey: "bValue") as! Double
    cCalValue = aDecoder.decodeObject(forKey: "cValue") as! Double
}

func encode(with aCoder: NSCoder) {
    aCoder.encode(aCalValue, forKey: "aValue")
    aCoder.encode(bCalValue, forKey: "bValue")
    aCoder.encode(cCalValue, forKey: "cValue")
}
}

这是我的校准课程:

class Calibration {

var a: Double
var b: Double
var c: Double
var user: Globals

init() {
}

func setAValue(a: Double) {
    self.a = a;
}

func setBValue(b: Double) {
    self.b = b;
}

func setCValue(c: Double) {
    self.c = c;
}

func getAValue() -> Double {
    return self.a
}

func getBValue() -> Double {
    return self.b
}

func getCValue() -> Double {
    return self.c
}

func initializeUser() {
    user = Globals(aValue: getAValue(), bValue: getBValue(), cValue: getCValue())
}
}

如何使用用户上次打开应用时输入的值初始化这两个类?

1 个答案:

答案 0 :(得分:-1)

class User {

c(-0.6264538, -0.8204684, -0.8356286, 0.3898432)

}