web-dev-qa-db-fra.com

Redéclaration non valide sur les classes CoreData

Je travaille avec CoreData, sur une entité appelée "RoleName".

Le problème est le suivant: je clique sur "Créer une sous-classe NSManagedObject" à partir de mon modèle, et il crée donc automatiquement les classes de mon entité.

Cependant, sur la déclaration de la classe, j'obtiens cette erreur:

Redéclaration non valide de "RoleName"

même si je n'ai pas d'autre classe du même nom.

37
dpstart

C'est parce que Xcode gère tout cela par lui-même. Je l'ai ressenti comme un problème car les classes générées automatiquement n'ont pas toutes mes propriétés.

Suivez donc ces étapes pour obtenir ce qu'il était:

  • Supprimez les classes que vous avez déjà créées pour les données de base.
  • Définissez class.Module comme module de produit actuel enter image description here

  • Définissez Class.codegen sur Manual/None

enter image description here

  • Sélectionnez maintenant votre entité et créez la sous-classe NSmanagedobject enter image description here

  • Vous êtes prêt

126
Deepukjayan

De Apple: Quoi de neuf dans Core Data

Génération automatique de sous-classes Xcode

Xcode prend désormais en charge la génération automatique de sous-classes NSManagedObject dans l'outil de modélisation. Dans l'inspecteur d'entité:

Manuel/Aucun est le comportement par défaut et précédent; dans ce cas, vous devez implémenter votre propre sous-classe ou utiliser NSManagedObject. Category/Extension génère une extension de classe dans un fichier nommé comme ClassName + CoreDataGeneratedProperties. Vous devez déclarer/implémenter la classe principale (si dans Obj-C, via un en-tête, l'extension peut importer nommé ClassName.h). La définition de classe génère des fichiers de sous-classe nommés comme ClassName + CoreDataClass ainsi que les fichiers générés pour Category/Extension.

Les fichiers générés sont placés dans DerivedData et reconstruits sur la première version après l'enregistrement du modèle. Ils sont également indexés par Xcode, donc un clic de commande sur les références et une ouverture rapide par nom de fichier fonctionne.

Vous n'avez pas besoin de créer manuellement des sous-classes pour NSManagedObjects.

Je vous suggère de supprimer les fichiers que vous avez créés avec NSManagedObjects (les déplacer dans la corbeille) et d'aller à chaque entité dans l'inspecteur DataModel sous Codegen sélectionnez: Manual / None et créer que les sous-classes.

14
FBC