55 votes

Déclaration invalide sur les classes CoreData

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

Le problème est le suivant : je clique sur "Create NSManagedObject subclass" depuis mon modèle, et cela crée automatiquement les classes pour mon entité.

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

Redéclaration invalide de "RoleName"

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

0 votes

Avez-vous déjà trouvé une solution? Et utilisez-vous Xcode8 et iOS 10?

0 votes

Oui, je suis, aucune solution pour l'instant.

0 votes

La réponse de Deepukjayan devrait fonctionner avec vous. ça marche avec moi.

161voto

Deepukjayan Points 1141

C'est parce que Xcode s'occupe de tout tout seul. J'ai ressenti un peu de tracas car les classes générées automatiquement n'ont pas toutes mes propriétés.

Donc, suivez ces étapes pour retrouver ce que c'était :

  • Supprimez les classes que vous avez déjà créées pour CoreData.

  • Définissez la classe Module comme module de produit actuel entrer la description de l'image ici

  • Définissez la classe Codegen comme Manuel/Aucun

entrer la description de l'image ici

  • Maintenant, sélectionnez votre entité et créez un sous-classe NSManagedObject entrer la description de l'image ici

  • Vous êtes prêt

5 votes

La étape "Module Produit Actuel" est très nécessaire. Merci @Deepukjayan

4 votes

Génial! Ça a fonctionné sans cette étape Supprimez les classes que vous avez déjà créées pour les données de base.

15voto

FBC Points 547

De Apple : Les nouveautés de 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 la valeur par défaut, et le comportement précédent ; dans ce cas, vous devez implémenter votre propre sous-classe ou utiliser NSManagedObject. Catégorie/Extension génère une extension de classe dans un fichier nommé comme ClassName+CoreDataGeneratedProperties. Vous devez déclarer/implementer la classe principale (si en Obj-C, via un en-tête l'extension peut importer nommée ClassName.h). 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 Catégorie/Extension.

Les fichiers générés sont placés dans DerivedData et reconstruits lors de la première génération après que le modèle a été enregistré. Ils sont également indexés par Xcode, donc le clic-commande sur les références et l'ouverture rapide par nom de fichier fonctionnent.

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 (Déplacez-les à la Corbeille) et d'aller dans chaque entité dans l'inspecteur du DataModel sous CodeGen sélectionnez : Manuel / Aucun et créez ensuite les sous-classes.

0 votes

Je suis désolé, ma question n'était pas claire à ce sujet. Quoi qu'il en soit, j'ai généré les sous-classes automatiquement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X