NSUserDefaults に自作クラスのオブジェクトを保存する
NSUserDefaults にデフォルトで保存できるのは NSString や NSDictionary など一部のもののみなので、自作クラスのオブジェクトを保存するためには NSData (バリナリ) にシリアライズしてあげる必要がある。
シリアライズして NSUserDefaults に保存する
// user は User クラスのオブジェクト NSData *data = [NSKeyedArchiver archivedDataWithRootObject:user] // このとき [user encodeWithCoder:] が呼ばれる [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"userData"];
NSUserDefaults から取り出して デシリアライズする
NSData *data = (NSData*)[[NSUserDefaults standardUserDefaults] objectForKey:@"userData"] User *user = [NSKeyedUnarchiver unarchiveObjectWithData:data]; // このとき [user initWithCoder:] が呼ばれる