52 votes

'les noms de fichiers sont utilisés pour distinguer privé déclarations du même nom' erreur

J'obtiens cette erreur sur la production d'une NSManagedObject dans Xcode 8.1 Swift.

:0: erreur: le nom de fichier "DemoOne+CoreDataClass.swift" utilisé à deux reprises: /Utilisateurs/Swasidhant/Desktop/maquette/DemoOne+CoreDataClass.swift " et '/Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again-hiinrbwwbmyfbrbctsfdzvudkkuy/Build/Intermediates/démo de nouveau.build/Debug-iphonesimulator/démo à nouveau.construire/DerivedSources/CoreDataGenerated/Modèle/DemoOne+CoreDataClass.swift' :0: remarque: les noms de fichiers sont utilisés pour distinguer privé déclarations avec le même nom :0: erreur: le nom de fichier "DemoOne+CoreDataProperties.swift" utilisé à deux reprises: /Utilisateurs/Swasidhant/Desktop/maquette/DemoOne+CoreDataProperties.swift " et '/Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again-hiinrbwwbmyfbrbctsfdzvudkkuy/Build/Intermediates/démo de nouveau.build/Debug-iphonesimulator/démo à nouveau.construire/DerivedSources/CoreDataGenerated/Modèle/DemoOne+CoreDataProperties.swift' :0: remarque: les noms de fichiers sont utilisés pour distinguer privé déclarations avec le même nom Commande /Applications/Xcode.app/Contents/Développeur/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc a échoué avec le code de sortie 1

J'ai cherché pour ce et a obtenu des réponses indiquant que le fichier peut être présent deux fois dans le projet, ce qui n'est pas mon cas. Une autre solution je suis tombé sur était de supprimer le fichier à partir de la phase de construction et de l'ajouter à nouveau. Que trop n'a pas fonctionné. Est-ce un paramètre de construction erreur de configuration ? Ou quelque chose d'autre?

Voici le lien avec un projet de démonstration créé avec Xcode 8.1 et montrant ce problème:- https://www.dropbox.com/s/xwyzhshktb2hqe7/demo2.zip?dl=0

120voto

Midhun MP Points 22312

Le problème se produit en raison de la Xcode automatique de la sous-classe de génération de fonctionnalité.

Selon Ce qui est Nouveau Dans la Base de Données

Xcode automatique de la sous-classe de la génération

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

  • Manuel/None est la valeur par défaut, et le comportement précédent; dans ce cas, vous devrait mettre en œuvre votre propre sous-classe ou de l'utilisation NSManagedObject.
  • Catégorie/Extension génère une extension de classe dans un fichier nommé comme ClassName+CoreDataGeneratedProperties. Vous devez déclarer/mettre en œuvre la classe principale (si en Obj-C, par l'intermédiaire d'un en-tête de l'extension peut importer nommé d'un nom de Classe.h).
  • Définition de la classe génère des fichiers nommés sous-classe 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 reconstruit sur la première génération après le modèle est enregistré. Ils sont également indexé par Xcode, donc commande en cliquant sur les références et rapide-ouverture par nom de fichier fonctionne.


Donc, pour résoudre votre problème, vous devez définir l' Codegen valeur du champ Manual/None comme indiqué ci-dessous: Core Data Codegen

13voto

superm0 Points 399

C'est ce que j'ai fait pour résoudre ce problème,

  1. Sélectionnez votre entité dans le modèle de données
  2. Définir le Module de Courant Module de Produit
  3. Laissez le Codegen à la Définition de la Classe si Manuel/Aucun fonctionne aussi
  4. Sélectionnez L'Éditeur De > Créer NSManagedObject Sous-Classe

8voto

Naveen Shan Points 6641

Peut aider quelqu'un, Aller à projet de la compilation de la source de supprimer la référence supplémentaire, le cas échéant.

5voto

Yogendra Singh Points 135

Sélectionnez le code modèle de données, puis sélectionnez l'Entité à modifier la valeur de 'Codegen" pour Manuel/Aucun.

Il va travailler.

4voto

Darkwonder Points 433

Le problème était dû à un second fichier nommé:"Extensions.swift" dans mon projet.

Après la suppression de la double "Extensions.swift" l'erreur a été résolu. Votre message d'erreur tel que vous qui fichier est dupliqué.

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