質問: userDefaults.objectForKey("date") と記述しても 「Cannot convert the expression's type 'NSString' to type 'String'」とエラーが出てしまいます。 どのようにして保存・読み出しすればいいのでしょうか?
回答: 保存の仕方はそれで合っています。 読み出す方法も合っているのですが、1点だけ、`objectForKey`メソッドは`AnyObject?`型を返すと定義されているので、戻り値を`NSDate`型で受けるならキャスト(型変換)が必要になります。 なので、 `let date2: NSDate = userDefaults.objectForKey("date") as NSDate` と書く必要があります。 この場合、変数の型は型推論が働くので省略して下のように書けます。 `let date2 = userDefaults.objectForKey("date") as NSDate` また、NSDate型にキャストしようとして中身がNSDate型と互換性がなかった場合、実行時エラーになるので、キャストに失敗した場合は何もしないようにするには以下のように`if〜let〜as?`と書きます。 ``` if let date2 = userDefaults.objectForKey("date") as? NSDate { println("date2: \(date2)") } ``` この場合、もし`"date"`キーに対応する値が`NSDate`型でなかった場合は、実行時エラーにならず`date2`変数には`nil`が入るのでif文の中は処理されません。