2014-09-18 4 views
0

Это может быть совершенно глупый вопрос, но я CD нуб ...Должен ли каждый ivar находиться в CoreData?

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

@property (nonatomic) float latitudeNorth;   // same as "northwest" 
@property (nonatomic) float latitudeSouth;   // same as "southeast" 
@property (nonatomic) float longitudeEast;   // same as "southeast" 
@property (nonatomic) float longitudeWest;   // same as "northwest" 

Теперь мне нужно добавить еще четыре точки, чтобы мы могли иметь полины вместо чистых прямоугольников. Поэтому я хочу добавить это ...

@property (nonatomic) float latitudeNorthEast; 
@property (nonatomic) float latitudeSouthWest; 
@property (nonatomic) float longitudeNorthEast; 
@property (nonatomic) float longitudeSouthWest; 

Эти точки данных являются эфемерными и существуют только до тех пор, пока приложение работает. Однако они были первоначально построены в xcdatamodeld. Это проблема? Или я нахожу только добавление дополнительных свойств и использование старого xcdatamodeld as-is?

ответ

1

Все зависит от вас.

Если у вас есть еще несколько объектов, которые извлекаются несколько раз и сохраняются снова, и вам нужно каждый раз, когда вы извлекаете и эфемерные свойства, вы должны держать их, конечно, в БД.

Но если вам нужны только они, когда вы извлекли и удерживаете объект, вы можете обрабатывать их только в классе, и нет необходимости вставлять их в БД.

Не каждый элемент в БДЕ также должен быть в выведенном классе;)

Но самые атрибуты также будет сохранен, потому что они должны быть обновлены через т.е. других услуг или должны представить эти обновления в другие взгляды. Или, может быть, потому, что вы не хотите постоянно удерживать атрибуты или извлекать их снова (т. Е. После таблицыView.reloadData) и не хотите потерять вычисленные результаты

+0

Фактически, NONE из этих данных * имеет *, чтобы быть сохраненным в db. Совершенно противоположное, первое, что приложение делает при запуске, - это вызов сервера JSON и загрузка всего этого из реального БД :-) Итак, тогда я думаю, что у меня есть мой ответ; Я просто объявляю их как свойства (? Или просто плавает?). В моем .m, нужно ли использовать @dynamic? –

+0

Нет, не используйте '@ dynamic', используйте' @ synhesized'. – quellish

0

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

-(float)latitudeNorthEast; 
-(float)latitudeSouthWest; 
-(float)longitudeNorthEast; 
-(float)longitudeSouthWest; 

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

Смежные вопросы