タグ

CoreDataとNSManagedObjectContextに関するfoxsafariのブックマーク (2)

  • CoreDataに大量のデータを追加する | エンジニア開発記

    CoreDataに大量のデータを追加するとき、メモリに気をつけてあげないとすぐメモリ不足になってしまいます。 しかし、CoreDataのManagedObjectは解放したいと思ったタイミングではなかなか解放してくれません。 メモリ解放するにはちょっとした手順が必要となります。 新しくManagedObjectContextを作る ManagedObjectをひとつ追加→保存する ManagedObjectContextのresetを呼ぶ(メモリ強制開放) 2〜3を必要なだけ繰り返す 他のManagedObjectContextで作ったManagedObjectに保存結果をマージする ちなみに、大量のデータを変更・処理する時なども手順は同じです。 新しくManagedObjectContextを作る まず、新しくManagedObjectContextが必要になります。 なぜ新しいのが必要

    foxsafari
    foxsafari 2013/07/24
    NSManagedObjectContextの内容をリセットする
  • CoreData - トランザクション(4) reset

    -[NSManagedObjectContext reset] を試す。 コードを追加し、 - (IBAction)resetAction:sender{ [self.managedObjectContext reset];} ボタンに紐づける。 実行。resetボタンを押すと、 データが消える。 これは NSManagedObjectContext(メモリ)上のデータが消えただけで、ディスク上のデータは残っている。 試しに reload ボタンを追加する。 ボタンが押されたら、NSArrayController を使っているので prepareContent を投げてみる。 - (IBAction)reloadAction:sender{ [arrayController prepareContent];} すると reset で一旦消えた後、 reloadボタンで復活。

    CoreData - トランザクション(4) reset
    foxsafari
    foxsafari 2013/07/24
    "- (void)reset"するとそれまでに読み込まれた NSManagedObjectがすべて開放される。用途としては NSMangedObjectContext のインスタンスを別の用途で使いまわす場合の初期化に使用することが考えられる。
  • 1