2013-02-12 6 views
9

私は完璧に動作するプログラムを持っています。クラッシュしたり、バグや何もないが、NSManagedObjectを削除すると、次のメッセージがコンソールに表示されます。コアデータ注釈 - 不足している伝播の修復

Core Data: annotation: repairing missing delete propagation for to-one relationship 

次に、関係についてのいくつかの詳細。

もう一度、これはアプリケーションをクラッシュさせず、プログラムは期待どおりに実行されますが、それでも気になります。それについて何かしなければならないのですか、それともCore Dataの注釈を付けるのは問題ないのですか?

ありがとうございます。

+0

同じことがネストされたコンテキストを使用していますか? – thewormsterror

+0

いいえ、通常のコアデータスタックだけです。 – user2006934

答えて

4

管理対象オブジェクトを削除した後にコンテキストを保存する必要があります。コンテキストが を保存するまで、新しいオブジェクトがストアに保存されていないのと同じように コンテキストが保存されるまで、削除されたオブジェクトがストアから削除されません

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
NSError *error; 
if (![appDelegate.managedObjectContext save:&error]) { 
    NSLog(@"Error in Appdelegate>getLocalVersionAddFirstVersion"); 
} 

:何かを削除した後

。 (Apple Documentation

+1

この答えは正しいソリューションにつながります。 –

4

とすぐに私は問題の関係を逆の関係を追加したとして、私は同じ問題を抱えていたし、それが去っていきました。

+0

これも私の問題を解決しました。どんな考え? – andershqst

+0

いいえ、いくつかの機会に**逆関係**が設定することが非常に重要であると言うCore Data Programmingガイドを引用することしかできません:_ "オブジェクトグラフの完全性に関して最も重要な機能は逆の関係です削除ルール "_、_"通常、両方向の関係をモデル化し、逆関係を適切に指定する必要があります。 "_ – MartinW

6

削除の方がより良い戦略を採用する必要があります。

  1. 削除ルール

    enter image description here

0
を上に何をすべきかを選択逆の関係を使用して、エンティティとの関係を選択し、関係関係
  • を選択し、あなたの.xcdatamodeldに行きます

    私にとっては少し違う問題だった:オーファンの検出は、新しい親関係をisOrphan()関数に追加するのを忘れたので、保存時に新しく作成されたオブジェクトをすぐに削除しました。奇妙なことに、このエラーに正確につながります...