NSMutableArray хранится с основными данными = РАБОТАЕТ, но после изменения массива НЕ РАБОТАЕТ - PullRequest
7 голосов
/ 06 августа 2010

У меня есть NSManagedObject с NSMutableArray в качестве атрибута:

@interface MyObject :  NSManagedObject  
{
}

@property (nonatomic, retain) id a1;

В модели данных он объявлен как Transformable. Я оставил поле Value Transformer таким же, как и со значением по умолчанию (светло-серым) NSKeyedUnarchiveFromData.

a1 создается как часть объекта:

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.

Пожалуйста, вы можете помочь - что здесь происходит?

Большое спасибо за вашу помощь!

1 Ответ

20 голосов
/ 07 августа 2010

Изменения внутри вашего массива не будут работать, потому что базовые данные не могут видеть в массиве.

Короткий ответ: не делайте этого . Это не повод для сохранения массива (или словаря) в Core Data.

Создайте новый объект в Базовых данных и создайте связь. Если порядок важен, поместите атрибут порядка в дочернюю таблицу.

Не хранить массивы как двоичные объекты.

...