2012-02-23 2 views
4

В моем подклассе NSManagedObject у меня есть ivar nSString, который разбивается на NSSet сущностей. Я хотел бы иметь возможность установить строку и во время вызова для сохранения, выполните разделение, однако, только установка строки не вызовет грязный флаг или необходимость сохранения.Есть ли способ отметить NSManagedObject как грязный?

+0

Вы получили ответ на этот вопрос? – SAHM

ответ

0

Я предполагаю, что вы имеете в виду «атрибут» вместо «ivar». Ваша схема разделения строки в наборе, а затем сохранения набора, возможно, спорна, но я думаю, это не проблема.

Зачем вам нужно, чтобы управляемый объект был помечен как «грязный»? Это действительно не нужно. Просто спаси его, грязный или нет!

Я не знаю, как вы проверяете «грязность» вашего управляемого объекта, но я предполагаю, что вы хотите, чтобы это вызвало спасение в определенной точке. В этот момент вы можете точно так же, как проверить свой собственный BOOL «dirtyFlag», который вы можете установить в соответствии с требованиями и держать доступным для проверки.

Всегда лучше делать подобные вещи ясными. Ваш код станет более читабельным и прозрачным.

+0

Нет, это ivar в моем подклассе, а не в файле MOC. Он вообще не касается базы данных. Я хочу разбить строку в -willSave. – jarjar

+0

Вы сохраняете части, которые вы разделите из строки? – Mundi

+13

Вот случай, когда вы хотите пометить объект грязным: так, чтобы он отображался в следующем NSManagedObjectContextObjectsDidChangeNotification как обновленный объект. Затем любые NSFetchedResultsControllers, для которых он является кандидатом, будут замечать и переоценивать его. – rgeorge

0

Вы можете реализовать + (BOOL)contextShouldIgnoreUnmodeledPropertyChanges на вас NSManagedObject подкласс и вернуть NO, а не по умолчанию (YES).

Это должно привести к тому, что NSManagedObjectContext будет уведомлен об изменениях свойств, даже если они не представлены фактическими столбцами в базе данных.

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