pixyzehn blog

iPhone App, Mac App, Programming, Web service, Tool, Evernote, etc

NSUserDefaultsを使ったデータのやりとりメモ

http://www.flickr.com/photos/98526104@N00/5592270855
photo by jtbrennan


NSUserDefaultsのことに関しての備忘録です。


NSUserDefaultsを使うと簡単にデータの保存や取得ができます。


NSUserDefaultsに少しはまってしまったので今一度確認しておきます。


・文字列の保存と取得と削除


保存

NSString *hoge = @"hoge";

[[NSUserDefaults standardUserDefaults] setObject:hoge forKey:@"name"];
[[NSUserDefaults standardUserDefaults] synchronize];


取得

NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];


削除

[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"bookmarks"];


・数値の保存と取得と削除


保存

NSInteger hoge = 1;

[[NSUserDefaults standardUserDefaults] setInteger:hoge forKey:@"name"];
[[NSUserDefaults standardUserDefaults] synchronize];


取得

NSString *string = [[NSUserDefaults standardUserDefaults] integerForKey:@"name"];


削除

[[NSUserDefaults standardUserDefaults] removeIntegerForKey:@"name"];


・配列の保存と取得と削除


保存

NSArray *mar = [NSArray array];

[[NSUserDefaults standardUserDefaults] setObject:mar forKey:@"name"];
[[NSUserDefaults standardUserDefaults] synchronize];


取得

NSMutableArray *arr =[[NSUserDefaults standardUserDefaults] mutableArrayValueForKey:@"name"];


削除

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"name"];


・NSMutableArray保存と取得と削除


NSMutableArrayを保存するには、NSDataに変換してから保存します。


保存

NSMutableArray *arr = [NSMutable array];
// NSDataに変換
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"name"];


取得

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];


削除

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"name"];


・アプリ内で使用したNSUserDefaultsの確認方法


保存されているkeyの参照

NSDictionary * dic = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
NSLog(@"defualts:%@", dic);


保存されているkeyと値の参照

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
NSDictionary *dic = [Defaults persistentDomainForName:appDomain];
NSLog(@"defualts:%@", dic);


NSUserDefaultsは実際いろいろな面で使えるし、使いどころを間違えないように使用していきたいと思いました。


参考サイト

http://d.hatena.ne.jp/glass-_-onion/20110920/1316473990

http://d.hatena.ne.jp/shu223/20111002/1330232118