私はかなり単純なスキーマを持っています。基本的に、Run <--> Data (Run には、ある種のセンサーからサンプリングされた温度などのデータが保持されます)。
現在、センサーは複数の測定値 (温度と湿度など) を持つことができるようです。そのため、1 つの実行に複数のデータ サンプルが含まれる場合があります。
したがって、<-->> サンプルとサンプル <--> データを実行します。(簡単にするために、今のところ Run <--> Data はそのままにしておきます。)
新しいマッピング モデルを作成すると、通常は機能しますが、新しいサンプルが作成されないこと、実行とサンプルの間、またはサンプルとデータの間に関係が確立されないことを除きます。
モデルを移行するためにマッピング モデルを取得しようとしていますが、生成されたマッピング モデルを少しでも変更すると、Cocoa エラー 134110 が発生します。
たとえば、"Sample" マッピング (ソースを持たない) を取得し、そのソースを "Run" に設定すると (Sample の逆関係を適切に "run" に設定できるようにするため)、マッピングはその名前を "RunToSample" に変更します。このマッピングでは、data と run の 2 つの関係が処理されます。data プロパティは自動的に次のように設定されます。
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "DataToData", $source.dataSet)
この例に従って、run プロパティを
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToRun", $source)
同様に、RunToRun の「サンプル」プロパティ マッピングを次のように設定します。
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source)
および DataToData の 'sample' プロパティを使用して
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "RunToSample", $source.run)
それで、何がうまくいかないのだろうか?「逆」関係を未指定のままにするなど、さまざまな順列を試しました。しかし、それでも同じエラー (134110) が引き続き発生します。
これは思ったよりずっと簡単で、基本的ではあるがマイナーな部分が欠けていると思います。また、NSEntityMigrationPolicy のサブクラス化と -createDestinationInstancesForSourceInstance: のオーバーライドを試みましたが、これらの努力はほとんど同じ結果に達しました。
ポインタや(関連する:-)アドバイスをよろしくお願いします。
編集: 簡単にするために、すべての関係をオプションとしてマークしました。とはいえ、最終的には別の選択をするかもしれません。