13
NSUserDefaults @akuraru

Ns user defaults

Embed Size (px)

Citation preview

Page 1: Ns user defaults

NSUserDefaults@akuraru

Page 2: Ns user defaults

自己紹介

• 主催者

• Scalaが好き

• Objective-Cは生成するもの

@akuraru

Page 3: Ns user defaults

CoreData

NSUserDefualts

静的ファイル

Page 4: Ns user defaults

静的ファイル

• 実行時に変わらない

• plist, JSON, csv, text 他

Page 5: Ns user defaults

NSUserDefualts

• 実行時に保存を簡単に扱うクラス

• アプリケーションの設定値などを保存する際用いる

• NSMutableDictionaryの様に扱える

Page 6: Ns user defaults

CoreData

• iOSのデータベース

• ORマッパー

• 複数のオブジェクトを保存したい場合用いる

Page 7: Ns user defaults

裏側の構造• plistで保存されている

• standerDefualtsでファイルを読み込む

• registerDefualtsで初期設定する

• synchronizeでファイルに保存する

• synchronizeは自動的に行われる

Page 8: Ns user defaults

• NSString• NSNumber• NSArray• NSURL

plistで扱える型は全て扱える

• NSDictionary• NSData• NSDate型

Page 9: Ns user defaults

注意• “synchronizeは自動的に行われる”が反映されるのが遅い

- (void)setHoge:(id)obj {NSUserDefaults *defualts = [NSUserDefaults standerDefaults];[defualts setObject:obj key:@”Hoge”];

}

- (id)hoge {NSUserDefaults *defualts = [NSUserDefaults standerDefaults];return [defualts objectForKey:@”Hoge”];

}

setHogeを呼び出した直後にhogeを呼び出しても正しい値は取れない

Page 10: Ns user defaults

注意• “synchronizeは自動的に行われる”が反映されるのが遅い

- (void)setHoge:(id)obj {NSUserDefaults *defualts = [NSUserDefaults standerDefaults];[defualts setObject:obj key:@”Hoge”];[defualts synchronize];

}

- (id)hoge {NSUserDefaults *defualts = [NSUserDefaults standerDefaults];return [defualts objectForKey:@”Hoge”];

}

synchronizeを明示的に呼び出す

Page 11: Ns user defaults

注意• “synchronizeは自動的に行われる”が反映されるのが遅い

+ (id)sheredManager {defualts = [NSUserDefaults standerDefaults];

}- (void)setHoge:(id)obj {

[defualts setObject:obj key:@”Hoge”];}

- (id)hoge {return [defualts objectForKey:@”Hoge”];

}

シングルトンにする

Page 12: Ns user defaults

注意2

• 大量のデータを保存すると重くなる• synchronizeが特に重い

• NSArrayやNSDataの保存は避ける

大量のデータを保存するときはCoreData

Page 13: Ns user defaults

まとめ

• CoreDataとNSUserDefualtsで適切に住み分けをしましょう

• 大量に保存すると遅延の原因になります