Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 614 - CoreDataMyDemo 3 - returnsObjectsAsFaults

Core Dataの基本事項を復習中です。CoreDataMyDemoに取り組んでいます。

今日からデータベースからデータを取りこむ時に重要なクラス、NSFetchRequestの使い方に慣れます。

しかし、このクラスのプロパティ、「 var returnsObjectsAsFaults: Bool 」が良くわからないのでアップルのドキュメントを読んで考えています。

returnsObjectsAsFaults

レシーバーを使ってフェッチされたオブジェクトに不具合があれば「YES」で、そじゃなければ「NO」になりますが、デフォルトは「YES」です。結果の型が「 NSManagedObjectIDResultType」ならこのプロパティは使用されません。オブジェクトのIDはプロパティの値を持っていないからです。得られたオブジェクトからそのプロパティにアクセスする必要があることが分かっているのであれば設定を「NO」にすることでパフォーマンスが改善するという利点があります。

デフォルトで、フェッチを実行するときにreturnsObjectsAsFaultsは「YES」です。Core Dataは、条件が一致するレコードのオブジェクトデータをフェッチして、ローキャッシュを情報で埋め、managed objectを欠陥として返します。これらの欠陥はmanaged objectsでが、すべてのプロパティは、欠陥が生じるまでローキャッシュに存在し続けます。欠陥が生じた時、Core Dataはローキャッシュからデータを抽出します。この操作によるオーバーヘッドは小さなものですが、データベースが巨大になれば、ちょっとした損失というわけにはならないでしょう。戻ってきたオブジェクトのプロパティにアクセスする必要があるのであれば(例えば、特定のアトリビュートの平均値を計算するために全てのオブジェクトの繰り返しをするような場合)、returnsObjectsAsFaultsを「NO」にして追加のオーバーヘッドを避けることが効果的です。

      • -

ちゃんと日本語に訳せません。訳せないと言うことは、理解できていないと言うことです。

悲しいけど、今の私の実力です(T_T)

今日はこれだけ。