2011-06-22 6 views
1

コアデータエンティティ(イベント)の作成中に、別のエンティティ(チーム)との関係を作成しています。この関係は、チームからイベント(1つのチーム、多くのイベント)から多対1であり、イベントとチームの間に逆の関係があります。1つのエンティティから別のエンティティ、既存のエンティティにコアデータの関係を作成するにはどうすればよいですか?

チーム< ----- >>イベント。

両方のリレーションシップの削除ルールが 'Nullify'に設定されています。

以下のコードブロックは、各イベントの作成中に新しいチームが作成されたときに最初の人口で正常に動作します。ただし、イベントを削除して再追加しようとすると、既存のチームが取得されますが、この例の最終行でTeamオブジェクトをイベントに追加しようとするとコードが失敗します。エラーは次のとおりです。-[__NSCFDictionary managedObjectContext]: unrecognized selector sent to instance 0x699ed60

Eventオブジェクトと既に存在するTeamオブジェクトとの関係を作成する正しい方法は何ですか?

Team *currentTeam = self.team; 
Team *newTeam = (Team *)[self loadTeamForNid:[NSNumber numberWithInteger: [teamNid integerValue]]]; 
// If the nid of the referenced team has changed, 
if (![[[currentTeam nid] stringValue] isEqualToString:teamNid]) { 
    currentTeam = nil; 
    currentTeam = newTeam; 
} 

// If an event has not been set by this point, it does not exist in the CD store, and we need to create it. 
if (currentTeam == nil) { 
    currentTeam = (Team *)[NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:[delegate managedObjectContext]];  
    [currentTeam populateTeamWithNode:[node nodeGet:teamNid]]; 
} 

// TODO: This breaks on reload of an object 
// self.team = currentTeam; 
[self setValue:currentTeam forKey:@"team"]; 
+0

エラーは何ですか?関係には逆数がありますか?削除ルールとは何ですか? – benzado

+0

@Benzado:これらの詳細を含めるように質問を更新しました。 – markdorison

答えて

3

概念上、間違いはありません。イベントの「チーム」プロパティを、適切なチームを表すNSManagedObjectのインスタンスに設定します。

このメッセージ:

-[__NSCFDictionary managedObjectContext]: unrecognized selector sent to instance 0x699ed60 

は、コードのいくつかの行は、それがNSManagedObjectの(私は仮定)インスタンスを期待NSDictionaryのインスタンスを処理されることを意味します。オブジェクトのmanagedObjectContextを照会しようとすると、NSDictionaryがそのセレクターのメソッドを実装していないため、例外がスローされます。

最初に行うべきことは、最後の行にブレークポイントを置き、currentTeamが実際には偽装のNSDictionaryであるかどうかを確認することです。 (例外の上にあるコードが以前にヒットしていたとします)そうでなければ、このコードパスに関係する可能性のある関連プロパティを探し出す必要があります。

コアデータは、NSManagedObjectsではなくNSDictionaryインスタンスを返すフェッチ要求スタイルをサポートしています。コード内のどこでもこのメソッドを使用している場合は、誤って結果が予想されない別のメソッドに渡されている可能性があります。

関連する問題