CoreData: Illegal attempt to establish a relationship 'hoge' between objects in different contexts の対処

Master-Detail で CoreData を使っていて遭遇したエラー。

予め書いておくと、context を作るときに、

    appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];

のようにしておけば、特段の問題はないのですが、そうしなかったとき、エラーに書いてある通りで、pointer 的には別のものを指定している訳で、エラーになってしまうのだということが分かりました、分かってしまえばどうってことないのですが、分かるまでが大変で・・・(ってか、エラーよく読めと)。

上記の指定の嫌なところが、わざわざキャストしてやる必要があるところで、そうしないと warning が出てしまいますから已むを得ないのですが、ちょっと面倒で、でも、CoreData としては singlton 扱いして欲しいでしょうからしょうがないのです。

ちなみに、このエラーですが、モデルを作成するところで、inverse の指定をしなければ回避できてしまいます。でも、よくよく調べて見ると Apple 的には inverse は普通指定しろよ的な扱いなんですね。エラー回避するために、inverse の指定やめようかなとも思いましたが、それでは進歩が無いと思い、色々調べてエラーの原因がわかって、将来的にはよかったです。