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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage