J'ai quelques NSManagedObjects et je voudrais écrire des méthodes pour trier et comparer les propriétés sur eux.Base de données de décoration avec des méthodes de tri-comparaison
Mon problème est que puisque les Données de base définissent les propriétés comme @dynamic, elles ne peuvent pas être référencées au moment de la compilation. Cela signifie que la décoration d'un NSManagedObject avec des méthodes comme celle-ci:
- (NSComparisonResult) compareDateAndTime:(Event *) event {
return [originDate compare:[event originDate]];
}
se traduira par le compilateur de ne pas être en mesure de localiser une propriété appelée « originDate ». La méthode ci-dessus est appelé comme ceci:
NSArray *events = [[NSArray alloc]
initWithArray:[unsortedEvents sortedArrayUsingSelector:@selector(compareDateAndTime:)]];
je pourrais aller avec prédicats ou fetchedResultController, mais je voudrais construire ces moi-même comme méthodes que j'ai un NSObjects identique pour chaque NSManagedObject. Cet objet NSObject agit comme un objet temporaire qui est transmis et rempli avant que ses propriétés ne soient définies sur NSManagedObject qui est ensuite conservé. J'ai aussi d'autres fonctions, comme des accesseurs spécialisés, que j'aimerais ajouter à NSManagedObject.
** (1) ** Existe-t-il un moyen général/pratique de décorer NSManagedObjects avec des méthodes et des fonctions ** (2) ** et de ne pas les écraser lorsque vous «reconstruisez» une classe pour une Entité ?
Merci pour toute aide ou « RTFM » donné :)
J'ai répondu à vos questions (1 et 2) ci-dessous, mais je suis d'accord avec Frank que je ne comprends pas votre "problème" que vous décrivez initialement. Le compilateur devrait vous permettre d'utiliser les propriétés déclarées. Incluez-vous l'en-tête de la classe générée pour l'entité? – gerry3