2

1対1の関係で悩んでいます。最高レベルでは、私は 1 対多の関係を持っています。私がやろうとしていることを説明するために、典型的なマネージャー、従業員の例を使用します。さらに一歩進んで、従業員に 1 対 1 のハウス関係を追加しようとしています。

NSManagedObject をサブクラス化したときに作成された addEmployeesToManagereObject メソッドを使用して、問題なく従業員を追加しています。テーブル ビューで Employee を選択すると、タイプ Employee の currentEmployee を設定します。これは、.h で宣言されています。

現在の従業員ができたので、現在の従業員に関連する Houses エンティティ属性を保存したいと思います。

私が本当に苦労しているのは、managedObjectContext の設定と、currentEmployee に関連する家の属性の設定と保​​存です。

私はいくつかのことを試しましたが、これが私の最後の試みです:

:employeeToHouseは、NSManagedObjectをサブクラス化したときに作成されたHouseタイプのプロパティです

House *theHouse = [NSEntityDescription 
                   insertNewObjectForEntityForName:@"House"
                   inManagedObjectContext:self.managedObjectContext];
// This is where I'm lost, trying to set the House
// object through the employeeToHouse relationship
self.currentEmployee.employeeToHouse

家の属性にアクセスして currentEmployee に保存するにはどうすればよいですか?

4

1 に答える 1

2

House はエンティティとして設定されているため、データ ストア内のテーブルと見なすことができます。その場合は、データ モデルで Employee と House の間に 1 対 1 の関係を設定する必要があります。

すでに行っている場合は、電話をかけるだけです。Core Data との 1 対 1 の関係については、対多の関係ほど詳しくありませんが。いずれの場合も、次のいずれかを試してください。

[self.currentEmployee addHouseObject: theHouse];

また

self.currentEmployee.employeeToHouse=theHouse;

次に、managedObjectContext に保存します。

NSError *error=nil;
if (![self.managedObjectContext save:&error]{

    NSLog(@"Core Data Save Error:  %@", error);
}

また、特定の状況についてはわかりませんが、self.managedObjectContext は、self.currentEmployee.managedObjectContext が指すものとすでに同じである必要があります。

幸運を、

ティム

于 2012-05-04T15:13:02.657 に答える