ページ

2010年6月11日金曜日

CoreData - トランザクション(4) reset

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

-[NSManagedObjectContext reset] を試す。

コードを追加し、

- (IBAction)resetAction:sender
{
[self.managedObjectContext reset];
}

ボタンに紐づける。
実行。resetボタンを押すと、
データが消える。
これは NSManagedObjectContext(メモリ)上のデータが消えただけで、ディスク上のデータは残っている。

試しに reload ボタンを追加する。
ボタンが押されたら、NSArrayController を使っているので prepareContent を投げてみる。

- (IBAction)reloadAction:sender
{
[arrayController prepareContent];
}


すると reset で一旦消えた後、
reloadボタンで復活。

reset するとそれまでに読み込まれた NSManagedObject がすべて開放される(ドキュメントでは "forgotton" という表記)。当然ながら直前の変更状態はディスクには残らず破棄されてしまう。Undo/Redo履歴もクリア。用途としては NSMangedObjectContext のインスタンスを別の用途で使いまわす場合の初期化に使うことが考えられる。