Wie man CGRect und andere Dinge in Kerndaten speichert
Ich habe ein paar Kinderkrankheiten mit Coredata, aber ich habe das Gefühl, es würde die Dinge für mich sehr aufklären, wenn mir jemand einige einfache Fälle erklären könnte.
Ich möchte mein Modell in Coredata einfügen und im einfachsten Fall die Vorteile von Undo / Redo nutzen. In allen Beispielen werden normalerweise Zeichenfolgen oder ganze Zahlen gespeichert. Was ist, wenn ich eine Klasse wie die folgende habe, die ich in Kerndaten implementieren wollte (ein zusammengesetztes Beispiel):
@interface Badge : NSObject {
NSString *textForBadge;
int badgeValue;
UIColor *color;
CGRect rect;
NSMutableArray *awards; // this would be a list of 'Category' - another custom class
}
Diese sind alle an Ort und Stelle gemacht, aber jedes Highlight eine Verwirrung
Wie ich es sehe, würde ich das .xcdatamodel öffnen und eine neue Entität namens "Badge" hinzufügen, die ein @ wärNSManagedObject
. Ich füge dann eine Eigenschaft für @ hintextForBadge
vom TypString
. So weit, ist es gut. Ich mache etwas ähnliches für badgeValue, komme dann aber zumUIColor
undCGRect
und ich bin ein bisschen ratlos, da es für diese keine Immobilie gibt. Soll ich eine Entität erstellen, die jede repräsentiert (d. H. EinRect
Entität mit vier Eigenschaftenx,y,w,h
) das sind ints? Dann füllen Sie jedes Mal ein CGRect mit diesen Ints? Das Gleiche gilt für die UIColor?
Schließlich komme ich zu meiner Liste vonawards
. Wenn dies eine Liste von Zeigern auf eine Anzahl von Objekten ist, die eine Auszeichnung darstellen, können sie ein Bild, eine Farbe, einen Text usw. enthalten. Ich gehe davon aus, dassaward
wäre wieder eine Entität, die ich entwerfen muss und nichtBadge
Speichern eines Arrays Ich hätte eine 1 zu viele Beziehung von ihm zumAward
Klasse.
Habe ich irgendetwas davon richtig verstanden oder gehe ich in die entgegengesetzte Richtung? Alle Beispiele, die ich sehe, wirken sich auf Vanille-Objekte wie String oder int aus. Deshalb möchte ich sicherstellen, dass ich dieses Recht im Kopf habe, bevor ich ein paar Dinge implementiere.
Mit freundlichen Grüßen
Bryn