我正在尝试学习如何使用 UserDefaults,但不知道如何存储我需要存储的值之一。
我有这个枚举:
enum CalculationFormula: Int {
case Epley
case Brzychi
case Lander
case Lombardi
case MayhewEtAl
case OConnerEtAl
}
这个类具有一个名为“selectedFormula”的属性,我希望能够将其存储为 NSUserDefaults 值:
class CalculatorBrain: NSObject {
var weightLifted: Double
var repetitions: Double
var oneRepMax: Double?
var selectedFormula = CalculationFormula.Epley
init(weightLifted: Double, repetitions: Double) {
self.weightLifted = weightLifted
self.repetitions = repetitions
let userDefaults = NSUserDefaults.standardUserDefaults()
self.selectedFormula = userDefaults.objectForKey("selectedFormula") <-- error
}
self.selectedFormula 行给了我一个错误:
'Cannot assign value of type 'AnyObject?' to type 'CalculationFormula'
在对 SO 进行大量搜索并阅读 Apple 文档后,我学到了很多关于 UserDefaults 和 AnyObject 的知识,但没有找到答案。
当我尝试将其转换为 Int 时,我以为我做到了:
self.selectedFormula = userDefaults.objectForKey("selectedFormula") as! Int
// 'Cannot assign value of type 'Int' to type 'CalculationFormula'
和
self.selectedFormula = userDefaults.objectForKey("selectedFormula") as Int
// 'Cannot convert value of type 'AnyObject?' to type 'Int' in coercion
我知道首选项值需要是这些类型之一(NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary),但我存储的是 Int,所以我应该在那里很好。
我只是卡住了,非常感谢一些帮助。谢谢,麻烦您了。