Question

J'ai récemment commencé à programmer en Objective-C et je m'intéresse maintenant aux données de base. Cependant, je ne comprends pas ce qui définit exactement le modèle dans Core Data.

Voici ce que je veux dire: supposons que je crée une entité avec un ensemble d'attributs à l'aide du constructeur de modèle graphique. J'ai ensuite généré le code Xcode pour la classe correspondante. Ensuite, je veux créer une propriété dans la classe qui ne sera utilisée que pendant l'exécution et qui n'a pas besoin d'être stockée ou récupérée par Core Data. J'ajoute donc une variable et une propriété correspondante à la classe (en la synthétisant dans l'implémentation)

La nouvelle propriété n'est pas définie dans le générateur de modèle, mais dans la classe dérivée de NSManagedObject. Comment est-il traité dans Core Data? Les propriétés répertoriées dans la classe définissent-elles des attributs dans le & modèle; modèle " ou est-ce que seuls les attributs définis dans le constructeur du modèle définissent le modèle?

De même, je souhaitais ajouter une propriété basée sur une énumération au fichier de classe qui, une fois get ou définie, permettait d'accéder ou de modifier un attribut NSNumber dans le modèle. Puis-je le faire sans que Core Data traite la propriété comme un attribut à stocker et à récupérer?

MERCI!

Était-ce utile?

La solution

Vous pouvez ajouter des propriétés personnalisées (et des variables) au code généré pour vos NSManagedObjects, comme vous le feriez pour toute autre classe. Celles-ci ne feront pas partie du modèle mais seront temporaires en mémoire. Il convient de noter que si l'objet géré était désalloué, la valeur en mémoire le serait également.

Si vous implémentez des accesseurs personnalisés pour les données sous-jacentes, je vous conseillerais de créer une catégorie sur l'objet géré en question. Dans les accesseurs, vous accédez au NSNumber sous-jacent et vous le convertissez en votre énumération, définie dans l'en-tête de la catégorie.

Si vous devez régénérer le code de l'objet géré, car le modèle a été modifié, vous pouvez simplement supprimer la classe générée pour l'objet géré et la régénérer sans avoir à fusionner avec le code personnalisé que vous avez ajouté. La catégorie que vous avez ajoutée fonctionnera de la même manière tant que la propriété de stockage sous-jacente restera la même.

Vous pouvez en savoir plus sur les catégories dans Guide du langage de programmation Objective-C sur l’ADC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top