Обновления атрибута NSDictionary в CoreData не сохраняются - PullRequest
3 голосов
/ 04 мая 2010

Я создал Entity в CoreData, который включает тип атрибута Transformable, реализованный как NSDictionary. Атрибут NSDictionary содержит только значения пользовательского класса. Все свойства пользовательского класса имеют тип NSString. Пользовательский класс соответствует реализации NSCoding:

- (Недействительными) encodeWithCoder: (NSCoder *) кодировщик;

- (id) initWithCoder: (NSCoder *) кодер

При сохранении сущности в первый раз все атрибуты, включая тип Transformable (NSDictionary), должным образом сохраняются в БД. Когда тот же самый объект извлекается из БД и обновляется (включая атрибут Transformable), он, кажется, обновляется должным образом. Однако, когда приложение закрыто и затем вновь открыто, выборка Entity не показывает обновленный тип атрибута Transformable, хотя остальные атрибуты типа NSDate и NSString являются современными. Атрибут Transformable - это исходное сохраненное значение, а не обновленное значение.

Это проблема с KVO или я что-то упускаю при попытке сохранить NSDictionary, заполненный пользовательским классом, в CoreData?

Ответы [ 2 ]

6 голосов
/ 10 мая 2010

Вы устанавливаете значение обратно в NSManagedObject? NSManagedObject не будет следить за изменениями трансформируемого объекта. Вам необходимо вызвать соответствующий установщик перед сохранением.

3 голосов
/ 14 сентября 2010

Я столкнулся с той же проблемой и в итоге переключился на NSDictionary в качестве трансформируемого атрибута вместо NSMutableDictionary. Просто извлеките NSDictionary как mutableCopy, поработайте над этим, поместите конечный результат в NSDictionary и заново вставьте его в managedObject. Сделал трюк для меня, и я еще не нашел другого решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...