2

Core Dataのドキュメントには、必要に応じてオブジェクトがメモリを節約できない可能性があると記載されています。管理プロパティではないプロパティを持つオブジェクトがある場合はどうなりますか?

たとえば、NSManagedObjectのサブクラスであるDepartmentクラスがあるとします。場所はiVar+アクセサーです。locationプロパティはDepartmentの属性ではありません。管理されておらず、永続化されることはありません。

Departmentオブジェクトの配列、またはDepartmentと1対1の関係にあるEmployeeオブジェクトがある場合、Departmentに障害が発生する可能性はありますか?Department.locationを設定した場合、その場所が常にそこにあることを確認できますか、それとも、Departmentに障害が発生して、場所に保存されている値が失われる可能性がありますか?

4

2 に答える 2

1

管理されていないデータがそこに残るとは思わないでしょう。現在はそうであっても、将来的には動作が変わる可能性があります。さらに、アーキテクチャ上、管理対象外のデータを管理対象オブジェクトに保持することはお勧めしません。あなたのほうがいいです:

  1. 管理データにする、または
  2. 管理対象データから管理対象外データを計算可能にする、または
  3. 管理されていないデータと部門をivarとして持つオブジェクトを作成します。
于 2010-10-19T23:30:46.093 に答える
1

部門が障害を起こす可能性はまだあります。モデルに記述したプロパティに障害が発生するだけです。通常、説明している状況は「一時的な」プロパティでカバーされます。これはCoreDataに格納されていないプロパティですが、オブジェクトモデルはそれらを認識しています。

一時プロパティを実装するときは、そのプロパティの値を提供するために必要なストレージ(または計算)を提供します。

あなたの場合、あなたの「場所」の値は、実際の管理対象オブジェクトがメモリに残っている間だけ存続するので、将来はそこにないと仮定することは完全に正当です。つまり、コンテキストのリセット、保存、保存通知からの更新など、管理対象オブジェクトが解放される原因となるアクションによって、値が失われる可能性があります(関連付けられている管理対象オブジェクトが障害に変わるか無効になるため) )。

于 2010-10-20T08:00:46.533 に答える