Наличие NSSet как части NSManagedObject в Core Data

У меня есть класс, свойства которого имеют ряд значений NSSet. Содержимое этих наборов не хранится в Core Data, а поступает из другого источника. В основном это строки идентификаторов, которые уникальны. Нет смысла заполнять Core Data ими как отдельными сущностями.

Однако, насколько я понимаю, невозможно сохранить NSSet как атрибут NSManagedObject. Я предполагаю, что мне нужно будет сериализовать его в двоичные данные вручную всякий раз, когда объект сохраняется, и десериализовать его, когда он извлекается из постоянного хранилища? То же самое относится и к хранению других классов коллекций.

Кто-нибудь еще сталкивался с этой проблемой и может дать совет?


person Oliver Mason    schedule 19.03.2014    source источник


Ответы (2)


Вы можете установить тип атрибута «трансформируемый», а затем напрямую сохранить набор в атрибуте. Убедитесь, что все содержимое набора соответствует < NSCoding >.

person Wain    schedule 19.03.2014
comment
Спасибо, это решило мою проблему! Строки UUID уже совместимы с NSCoding. - person Oliver Mason; 20.03.2014

В Xcode в Project Navigator откройте источник project_name.xcdatamodeld для редактора модели и выберите нужный объект. Выберите «Редактор» в строке меню Xcode, и есть элемент «Создать подкласс NSManagedObject...». Создайте подкласс и используйте его для дополнительных свойств, не относящихся к основным данным. Подкласс становится частью модели вместо объекта. Он сохраняет все поведения сущности.

person mikeD    schedule 19.03.2014
comment
Спасибо за ответ, но это не моя проблема: подкласс NSManagedObject, который я использую (извините, я не очень понял это в моем вопросе), имеет NSSet как свойство, которое я хочу хранить в Core Data, и это хранение этой коллекции вызывает у меня головную боль. - person Oliver Mason; 20.03.2014