2013-03-09 3 views
0

У меня есть две сущности:Как работать с отношениями Core Data?

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

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

В принципе у меня есть один пациент с большим количеством назначений. Как установить запланированный параметр в члене Назначения? Я пробовал это до сих пор:

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

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

Они работают, когда я редактирую встречу. Но он возвращает SIGBRT, когда я добавляю новую встречу.

+0

Не могли бы вы поделиться журнал сбоев? –

ответ

0

Ваш код выглядит правильным. Поэтому я полагаю, что, скорее всего, вы не определили обратное отношение правильно в файле .xcdatamodel.

Для чего я понимаю, у вас есть отношения «один ко многим». То есть у одного пациента может быть несколько Назначений. Поэтому назначение относится к одному пациенту. Чтобы это отношение было семантически правильным, вы должны сообщить ему, как они соотносятся друг с другом. Для этого вам нужно указать, что является обратным элементом каждого из элементов в отношении. На рисунке ниже вы можете увидеть, как регион может иметь несколько состояний, а государство принадлежит уникально для региона. Обратите внимание на стрелку, соединяющую элементы отношения, как у «многих» есть двойная стрелка, а «одна» - одна стрелка. enter image description here

Я считаю, что вы, скорее всего, забыли указать это в файле xcdatamodel.

Проверить эту ссылку для получения дополнительной информации: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

 
Inverse Relationships 
Most relationships are inherently bi-directional. If a Department has a to-many relationship to the Employees that work in a Department, there is an inverse relationship from an Employee to the Department. The major exception is a fetched property, which represents a weak one-way relationship—there is no relationship from the destination to the source (see “Fetched Properties”). 

You should typically model relationships in both directions, and specify the inverse relationships appropriately. Core Data uses this information to ensure the consistency of the object graph if a change is made (see “Manipulating Relationships and Object Graph Integrity”). For a discussion of some of the reasons why you might not want to model a relationship in both directions, and some of the problems that might arise if you don’t, see “Unidirectional Relationships.” 
+0

Спасибо! Решила! – msluna

Смежные вопросы