UserDefaults の操作方法を学習しようとしていますが、保存する必要がある値の 1 つを保存する方法がわかりません。
私はこの列挙型を持っています:
enum CalculationFormula: Int {
case Epley
case Brzychi
case Lander
case Lombardi
case MayhewEtAl
case OConnerEtAl
}
そして、NSUserDefaults値として保存できるようにしたい「selectedFormula」というプロパティを持つこのクラス:
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 を格納しているので、そこに問題はありません。
私は立ち往生しているだけで、本当に助けていただければ幸いです。よろしくお願いします。