У меня есть два подкласса NSManagedObject
. Flight
и Aircraft
. Каждый Flight
связан с одним Aircraft
.Настройка отношений CoreData без контекста?
Когда пользователь создает Flight
, я только сделать следующее:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Flight" inManagedObjectContext:self.managedObjectContext];
self.flight = [[Flight alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
Создайте объект, но не вставить его в managedObjectContext
до тех пор, пока пользователь не уверен, что они хотят, чтобы сохранить его. Если они сохраняются, я вставляю объект, если они отменяют, его отбрасывают.
Это было отличное решение, до сих пор. Когда пользователь выбирает Aircraft
, я делаю это:
[self.flight setAircraft:aircraft];
Однако, поскольку flight
объект не был включен в managedObjectContext
в приложение падает с этой ошибкой:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'aircraft' between objects in different contexts
Это имеет смысл. И если я вставляю объект flight
сразу после его создания, эта ошибка не возникает. Но тогда это создает проблему, что, если пользователь отменяет и больше не хочет этот объект полета?
Я согласен с ор и яблоко делает слишком AFAICS -> они рекомендуют контекст царапанию –
я бы не ставил незаконченные данные в какой-либо «глобальный контекст» –