iOSアプリ開発のメモ置き場

ささたつがiOSアプリ開発で知ったObjective-Cのtipsなどを書いていく所存

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:] が呼ばれる