Проблема с удалением объекта Magical Record

У меня есть связь "один ко многим" из обратной связи с вопросами в обратной связи. Правило удаления установлено на Nullify in Question и Cascade в Feedback (так что, когда Feedback удаляется, он удаляет все свои вопросы, а когда вопрос удаляется, указатель устанавливается равным null в Feedback.questions).

Проблема в том, что когда я удаляю вопрос (всего один вопрос из многих, существующих в отзывах), я не могу получить доступ к отзывам! Хотя фактическая запись действительно существует в БД (проверено с помощью MesaSQLite). Код выглядит так:

FeedbackQuestion * questionToDelete = [FeedbackQuestion findByQuestionId:[entryID integerValue]];
DLog(@"Deleting FeedbackQuestion with ID: %@", questionToDelete.questionID);
success = [questionToDelete MR_deleteEntity];
//success is 1 here
***
// Accessing the feedback which question was deleted
Feedback * feedback = [Feedback findByFeedbackId:feedbackId];

обратная связь здесь нулевая. ЗАЧЕМ? Что я делаю не так?


person Stas    schedule 01.08.2013    source источник
comment
Вы сохранили это удаление позже?   -  person Keith Smiley    schedule 01.08.2013
comment
Можете ли вы опубликовать скриншоты вашей конфигурации основных данных из xcode? в частности атрибуты отношений.   -  person Jon    schedule 01.08.2013
comment
При удалении во мне жестко запрограммировано всегда возвращать да.   -  person casademora    schedule 01.08.2013


Ответы (1)


Хм, попробуйте следующую строку после строки комментария "//success is 1 here":

[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];

или, если у вас не включен «сокращенный режим»:

[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
person Nenad M    schedule 01.08.2013
comment
Эй, это помогло! Ваш второй метод помог мне получить обратную связь! Не могли бы вы объяснить мне, что я должен сохранять контекст каждый раз, когда я удаляю какой-либо объект? Я думал, что метод MR_deleteEntity делает все внутри - person Stas; 02.08.2013
comment
Ах, поверьте мне... у меня нет для этого подходящего объяснения! :) Я был в похожей ситуации и просто экспериментировал с тем, что мог предложить MR. Посмотрев на интерфейсы MR, я наткнулся на некоторые из этих методов saveTo... и начал использовать их, чтобы сохранить свои изменения. Я думаю, что это полностью касается основных данных, и вы должны понимать, как работают основные данные, чтобы знать, нужно ли вам явно что-то сохранять или нет. MR — действительно хороший фреймворк, но он не освобождает вас от понимания основных данных — и у меня все еще есть проблемы с пониманием основных данных в некоторых областях! - person Nenad M; 05.08.2013