У меня есть несколько проблем с прорезыванием зубов coredata, но я чувствую, что мне многое прояснилось бы, если бы кто-то мог объяснить мне несколько простых случаев.
Я хочу поместить свою модель в coredata, и в самом простом случае воспользоваться возможностью отменить / повторить. Дело в том, что все примеры, которые я вижу, имеют тенденцию хранить либо строки, либо целые числа. Что если у меня есть следующий класс, который я хотел бы реализовать в основных данных (выдуманный пример):
@interface Badge : NSObject {
NSString *textForBadge;
int badgeValue;
UIColor *color;
CGRect rect;
NSMutableArray *awards; // this would be a list of 'Category' - another custom class
}
Все они сделаны на месте, но каждый подчеркивает путаницу
Как я вижу, я бы открыл .xcdatamodel и добавил новую сущность с именем 'Badge', которая была бы NSManagedObject
. Затем я добавляю свойство для textForBadge
типа String
. Все идет нормально. Я делаю что-то похожее для badgeValue, но потом подхожу к UIColor
и CGRect
, и я немного озадачен, так как для них нет свойства. Должен ли я создать сущность для представления каждой (т.е. Rect
сущности, которая имеет четыре свойства x,y,w,h
), которые являются целыми числами? Затем каждый раз заполнять CGRect этими целочисленными значениями То же самое для UIColor?
Наконец, я попал в список awards
. Если это список указателей на ряд объектов, представляющих награду, они могут содержать изображение, цвет, текст и т. Д. Я предполагаю, что award
снова будет сущностью, которую я должен разработать, а не Badge
, хранящей массив Я бы имел отношение 1 ко многим от него до Award
класса.
Правильно ли я это понимаю или иду в противоположном направлении? Все примеры, которые я вижу, работают с ванильными объектами, такими как String или int, поэтому я хочу убедиться, что у меня есть это право, прежде чем реализовывать кучу вещей.
С уважением,
Брин