Сохранение NSMutableArray в базовые данные - PullRequest
20 голосов
/ 09 июля 2009

Я хочу добавить NSMutableArray из NSStrings в одну из моих сущностей в моей базовой модели данных. Проблема в том, что это не поддерживаемый тип в Core Data.

Я попытался создать трансформируемый атрибут, но проблема в том, что я не вижу способа превратить NSMutableArray в NSData, а затем перейти от NSData к NSMutableArray. У кого-нибудь есть идеи относительно того, как можно решить эту проблему?

(я знаю, что могу заархивировать массив, но я не хочу этого делать, я хочу, чтобы он присутствовал в моей модели).

1 Ответ

32 голосов
/ 09 июля 2009

Вы можете иметь двоичный атрибут данных в вашем моделируемом объекте, архивировать массив в данные и передавать его объекту.

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

**** Редактировать: Вот как архивировать массив в NSData, чтобы его можно было использовать в вашем управляемом объекте ***

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]];

По сути, любой ваш класс, соответствующий протоколу NSCoding, может быть заархивирован таким образом. NSArray / NSMutableArray уже соответствуют этому. Они говорят всем своим объектам архивировать себя, поэтому они тоже должны соответствовать. И все члены этих объектов должны соответствовать и т. Д. Это как дерево.

Так как ваш массив соответствует, и это массив NSString (который также соответствует), то вы золотой.

...