Я понимаю разницу между примитивным сеттером и не примитивным сеттером (уведомления KVO и все такое). Но если я напишу свой собственный setValue: forKey: и вызовите setPrimitiveValue: forKey :, мне нужно передать ему ТОЛЬКО значение? Я прочитал документацию, я искал ее, но я не мог найти никакого обсуждения об этом вообще.Пользовательские базовые поставщики данных - setValue: forKey: против setPrimitiveValue: forKey:
Редактировать: Спасибо, adpalumbo & Dave FN. Вы оба согласны, что это не должно быть того же значения. Мой настоящий вопрос. Я пишу свой собственный сеттер и геттер. Затем я вызываю setter в NSManagedObject, чтобы изменить его примитивное значение, но из-за того, как написан пользовательский getter, он все равно возвращает старое значение (значение примитива было изменено, но если вы вызываете пользовательский геттер до и после изменения , вы не увидите никаких изменений.). После этого я вызываю hasChanges в NSManagedObjectContext и возвращает NO! Если я вызову save в контексте, это изменение не будет сохранено вообще. Есть идеи? Нормальное поведение? Ошибка потенциального ядра?
Быстрый вопрос в ответ на ваши изменения, вы вызываете 'willChangeValueForKey:' и 'didChangeValueForKey:' в вашем сеттере? –
Ах ... вот и все. Я только добавил didChangeValueForKey: когда у меня возникла проблема. После добавления willChangeValueForKey: все работает нормально. Это не ошибка основных данных, и это не имеет ничего общего с тем, что пользовательский getter возвращает одно и то же значение. Я сказал, что знаю информацию о вещах KVO ... шутка на мне! Большое спасибо Dave FN! – headsupftw
Очень легко пропустить один из этих вызовов, поскольку они автоматически добавляются для не-основных объектов данных, но не в этом случае. Я обновил свой ответ с правильным исправлением. Рад помочь. –