У меня есть NSManagedObject с NSMutableArray как атрибут:
@interface MyObject : NSManagedObject
{
}
@property (nonatomic, retain) id a1;
В модели данных это объявляется как Transformable
. Я уехал, поле Value Transformer как он со значением по умолчанию (в светло-сером) NSKeyedUnarchiveFromData
.
a1 создается как часть theObject:
MyObject *theObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext: myManagedObjectContext];
и инициализированный:
a1 = [[NSMutableArray alloc] init];
Объекты добавляются к a1 с [a1 insertObject:[NSNumber numberWithInt:0] atIndex: 0 ];
Затем я сохраняю контекст, в конце концов, это. При загрузке контекста назад все элементы, сохраненные в a1, сохраняются и загружаются. ALL WORKS WELL!
НО когда теперь a1 ИЗМЕНЕНИЯ, например, путем добавления еще одного элемента к a1 или изменения любого элемента в a1 и контексте сохраняется и загрузился назад, содержание a1 НЕИЗМЕННО (это остается точно, как это было, прежде чем все изменения произошли). CHANGES DON'T WORK!
Между прочим, в то время как приложение работает, все изменения в a1 ХРАНЯТСЯ в a1.
Можно ли помочь - что продолжается здесь?
Спасибо ver очень для Вашей справки!
Изменения внутри вашего массива не будут работать, потому что Core Data не может видеть в массиве.
Краткий ответ: не делайте этого . Это не причина хранить массив (или словарь, если на то пошло) в Core Data.
Создайте новую сущность в Core Data и установите связь. Если порядок важен, поместите атрибут порядка в дочернюю таблицу.
Не храните массивы как двоичные объекты.