タグ

ブックマーク / blog.9wick.com (4)

  • CoreDataで一時的なManagedObjectを作る方法 | エンジニア開発記

    CoreDataといえばデータを保存する手段であると同時に、MVCのMであるモデル構造を作るのに使われます。 しかし、モデル構造を持つ全てのデータが保存したいかと言われるとそうではありません。 たとえば、webから一時的にデータを持ってきて、そのなかからお気に入りのものだけ実際に保存するとかいうこともあるでしょう。それのためにいちいち保存していたら保存に使う時間も、CPUのリソースももったいないです。 というわけで、CoreDataで保存しない一時的なManagedObjectを作る方法を紹介します。 ※保存しない分、時間とCPU節約にはなりますが、メモリの節約にはなりません。 大量のデータを使うときは保存することでメモリを節約したほうがいいかもしれません。 CoreDataで保存しない一時的なManagedObjectを作る方法 CoreDataではManagedObjectConte

  • CoreDataの小技〜NSDictionaryとNSManagedObjectの相互変換など | エンジニア開発記

    CoreDataについて、幾つか小技があるのでメモ。 該当件数を取得する SQLに於けるcount文です。 [objc] NSManagedObjectContext *context = …; NSFetchRequest *request = …; NSError *error = nil; NSUInteger count = [context countForFetchRequest:request error:&error]; [/objc] 最大値取得 来はNSExpressionDescriptionを使うべきなのでしょうが、ソースが長くなるので order … limit 1 で代用できます。 idの最大値を取る場合 [objc] NSManagedObjectContext *context = …; NSFetchRequest *request = …; NSSor

  • CoreData+TableViewでスクロールが遅い時の対策 | エンジニア開発記

    CoreData+TableViewのときFetchResultsControllerを使います。 しかし、CoreDataをつかっているから、FetchResultsControllerをつかっているから絶対にTableViewがかくかくしないなんてことはありません。 各オブジェクトのデータ量によってはスクロールがかくかくしてしまいます。 そのカクカクの対策方法です。 カクカクする原因 まず、なぜかくかくする時があるのかというと 単純にCoreDataからデータをもって来るときにデータ量が多いのが原因です。 ここでいうデータ量が多いってのはTableViewに表示するデータの数が多いという意味ではなく、 一つ一つのManagedObjectのデータ量が多いという意味です。 たとえば、音楽プレーヤーアプリでCoreDataを使っていたとすると、 かくかくする原因は曲の数ではなく、それぞれの

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

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

  • 1