Ceci est une question pour Objective-J/Cappuccino, mais j'ai ajouté la balise cacao car les frameworks sont très similaires. L'un des inconvénients de Cappuccino est que CoreData n'a pas encore été porté, vous devez donc faire tous vos objets de modèle manuellement.Gérer des relations inverses sans CoreData
Dans CoreData, vos relations inverses sont gérées automatiquement pour vous ... si vous ajoutez un objet à une relation to-many dans un autre objet, vous pouvez parcourir le graphique dans les deux directions.
Sans CoreData, existe-t-il un moyen propre de configurer ces relations inverses automatiquement?
Pour un exemple plus concret, prenons l'exemple typique du département et des employés. Pour utiliser la terminologie des rails, un objet Département a plusieurs employés et un employé appartient à un département. Donc, notre modèle de département a un NSMutableSet (ou CPMutableSet) "employees" qui contient un ensemble d'employés, et notre modèle Employee a une variable "department" qui pointe vers le modèle Department qui en est propriétaire.
Existe-t-il un moyen facile de faire en sorte que, lorsque j'ajoute un nouveau modèle d'employé dans l'ensemble, la relation inverse (employee.department) soit automatiquement définie? Ou l'inverse: Si je définis le modèle de département d'un employé, il est automatiquement ajouté à l'ensemble des employés de ce département. Je sais que je crée un objet, "ValidatedModel", que tous mes modèles sous-classe, qui ajoute quelques méthodes qui configurent les relations inverses, en utilisant KVO. Mais j'ai peur que je fasse beaucoup de travail inutile, et qu'il existe déjà un moyen plus simple de le faire.
Est-ce que quelqu'un peut mettre mes inquiétudes au repos?
Merci, c'est en fait ce que je fais. (À l'exception de l'utilisation de KVO pour déclencher quand l'un des côtés change et ajouter l'autre.) Donc, il semble que je suis sur la bonne voie, merci. –
Si c'est ce que vous faites, vous êtes sur la bonne voie. Je pense que mon approche pourrait être un peu plus facile à cause de la surcharge du KVO, mais l'une ou l'autre façon devrait fonctionner correctement. – Alex
La principale raison pour laquelle j'utilise KVO est que je n'ai pas la possibilité de modifier les accesseurs générés. Au lieu de cela, dans ma méthode init, j'appelle une méthode qui décrit le type de relation, la propriété à utiliser et la propriété de la relation inverse. Ceci met automatiquement en place les observateurs, etc. Je partagerai le code après que tout fonctionnera. –