2012-04-13 2 views
0

У меня есть класс данных, сгенерированный данными, «элемент». Он имеет свойство «type», которое является другим классом.Понимание основных данных и сохранение NSManagedObjectContext после удаления

Я настроил 'setType' так, чтобы выполнялась другая обработка - например, я обновляю 'dateTypeLastSet'. Пока это работает.

Однако по какой-то причине эта дополнительная обработка также происходит, когда я удаляю элемент. В частности, это происходит не до тех пор, пока я не вызову «save» в NSManagedObjectContext.

Это потому, что удаление вызывает автоматический вызов 'setType: nil'? Регистрация параметров показывает, что NULL является попыткой назначения.

Это будет проблематично для меня, так как среди моего дополнительного кода обработки я выполняю некоторые вычисления. Давайте сделаем вид, что я храню некоторый счетчик «количество раз, когда тип элемента установлен» там. Я не хочу, чтобы удаление и настройка были равны нулю. Но я также не могу просто проверить нуль, поскольку это может быть законное обновление (ноль как тип может быть приемлемым).

Любые объяснения или рекомендации приветствуются.

UPDATE

Оказывается, когда тип будет удален, он действительно установить этот атрибут всухую - я заметил, что правило удаления в данном объекте является недействительным по умолчанию. Если изменить его на какое-либо действие, у меня нет этой проблемы.

Итак, теперь возникает вопрос - каковы другие эффекты изменения правила удаления из nullify? Почему это воспринимается как разумный дефолт?

ответ

1

Кажется, что nullify является разумным по умолчанию, потому что, как только «тип» больше не существует, наличие бродячего указателя на него может быть опасным. Если вы заметили NSNoActionDeleteRule в документации, он говорит:

«Если вы используете это правило, вы несете ответственность за сохранение целостности объекта графа Это правило строго не рекомендуется все, кроме продвинутых пользователей. «.

+0

Тогда я просто не понимаю, как можно создать собственный код в моем методе setType, так как он всегда будет вызван, когда я удалю элемент. –

+0

Я думаю, это зависит от разницы между nil как явной установкой и значением nil как значения, которое система должна использовать. Можете ли вы определить объект типа, который является нулевым значением, и использовать его для явного setType :? ... как используется NSNull? –

+0

Я мог бы. Думаю, я просто чувствую себя нехорошим. –

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