0

私には2つのエンティティがあります:

Patient
- firstName
- lastName
- scheduledAppointments <---->> Appointment

Appointment
- date
- times
- scheduledPatient <<----> Patient

基本的に私には多くの予約がある1人の患者がいます。AppointmentsエンティティでscheduledPatientを設定するにはどうすればよいですか?私はこれまでこれを試しました:

[self.appointment setScheduledPatient:[self.patientArray objectAtIndex:indexPath.row]];

self.appointment.scheduledPatient = [self.patientArray objectAtIndex:indexPath.row];

予定を編集しているときに機能します。ただし、新しい予定を追加すると、SIGBRTが返されます。

4

1 に答える 1

0

あなたのコードは正しいようです。したがって、.xcdatamodelファイルで逆の関係を適切に定義していない可能性が高いと思います。

私が理解していることについては、あなたは1対多の関係を持っています。つまり、1人の患者が複数の予定を持っている場合があります。したがって、予定は1人の患者に属します。この関係が意味的に正しいためには、それらが互いにどのように関係しているかを知らせる必要があります。そのためには、リレーション内の各要素の逆要素を指定する必要があります。下の図では、リージョンにいくつかの状態があり、状態がリージョンに一意に属していることがわかります。関係の要素を結ぶ矢印に注意してください。「多く」には二重の矢印があり、「1つ」には単一の矢印があります。 ここに画像の説明を入力してください

xcdatamodelファイルでこれを指定するのを忘れた可能性が高いと思います。

詳細については、次のリンクを確認してください:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

逆の関係
ほとんどの関係は本質的に双方向です。部門が部門で働く従業員と多対の関係を持っている場合、従業員から部門への逆の関係があります。主な例外はフェッチされたプロパティです。これは弱い一方向の関係を表します。宛先からソースへの関係はありません(「フェッチされたプロパティ」を参照)。

通常、両方向の関係をモデル化し、逆の関係を適切に指定する必要があります。Core Dataはこの情報を使用して、変更が加えられた場合にオブジェクトグラフの一貫性を確保します(「関係の操作とオブジェクトグラフの整合性」を参照)。両方向の関係をモデル化したくない理由のいくつかと、モデル化しない場合に発生する可能性のある問題のいくつかについては、「一方向の関係」を参照してください。
于 2013-03-09T09:52:19.327 に答える