iPhone: основные данные сохраняют объект класса - PullRequest
1 голос
/ 14 июня 2010

У меня есть объект в основных данных, который называется Местоположение.Внутри этого у меня есть несколько полей, таких как дата.Но я также хотел бы сохранить в нем созданный мной объект класса с именем Annotation.Какой тип атрибута я бы использовал для этого, поскольку это созданный мной объект класса?

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

У вас есть два варианта:

  1. Если ваш класс Annotation соответствует протоколу NSCoding (или если вы хотите написать NSValueTransformer для преобразования своего пользовательскогоПрименительно к экземпляру NSData вы можете использовать преобразуемый атрибут в вашей сущности Core Data. Core Data будет использовать назначенный NSValueTransformer для автоматической сериализации / десериализации вашего Annotation экземпляра для вас.*

    Вы можете создать сущность Annotation в своей модели базовых данных. Вам нужно будет написать свой собственный код, чтобы присвоить сущности CLLocationCoordinate2D. Возможно, вы создадите постоянную поддержку с использованием двух double s.а затем напишите установщики / средства доступа для CLLocationCoordinate2D.

Преимущество (1) состоит в том, что это проще (если ваш класс соответствует NSCoding). Преимущество (2) заключается в том, что вы можете выполнять запросы к данным внутри объекта, даже если используете постоянные хранилища SQLite. Если вы используете (1), данные непрозрачны для механизма запросов SQLite, поэтому вы не сможете выполнять запросы к ним с помощьюБэкэнд SQLite.

1 голос
/ 14 июня 2010

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

...