Bien qu'il soit possible de créer une nouvelle entité et un nouveau modèle à la volée en pratique, cela est extrêmement complexe. Si rien d'autre vous devez migrer des données persistantes existantes vers le nouveau modèle et un nouveau fichier de stockage persistant. Je recommande fortement de ne pas essayer ceci surtout si vous débutez avec Core Data.
Vous avez des options:
Tout d'abord, êtes-vous sûr que vous avez réellement besoin d'une nouvelle entité? Les personnes qui débutent avec les données de base confondent souvent les entités pour les objets gérés. Les entités sont des objets gérés comme les classes sont des instances. Les entités sont des abstractions utilisées pour créer le graphe d'objets. Ils ne contiennent pas de données. Les moments où vous avez besoin de nouvelles entités sont très, très rares. Deuxièmement, si vous avez besoin d'une sorte d'entité dynamique, il est généralement préférable de décomposer l'entité dynamique en plusieurs sous-entités fixes, puis d'utiliser des relations pour créer une entité virtuelle. Par exemple. Vous avez besoin d'une "entité" Personne dynamique afin de créer plusieurs entités dans le modèle dont chacune contient un attribut de la personne. Vous pourriez avoir une entité Field
qui aurait un attribut fieldName
, puis un attribut fieldValue
. Ensuite, ayez une entité réelle Person
qui n'a aucun attribut mais juste des relations avec les objets Field
nécessaires. Vous pouvez ajouter tous les champs nécessaires à une personne, puis reconstituer un objet de personne virtuelle en déplaçant les relations vers ses champs.
Je doute cependant que vous ayez besoin de ce genre de flexibilité. Un tel besoin est très rare. Je voudrais prendre du recul et voir exactement quelles données dynamiques vous pensez que l'utilisateur pourrait avoir besoin d'entrer.
+1 Je pense que vous avez raison de déduire que l'OP est confus entre le besoin d'ajouter un autre objet géré (commun) et la nécessité d'ajouter une autre entité (ridiculement rare). – h4xxr
Merci TechZen. Puis-je avoir plus de détails sur la deuxième option. S'il vous plaît... –