Je reçois cette erreur lors de la génération d'un NSManagedObject dans Xcode 8.1 dans Swift.
: 0: erreur: nom de fichier "DemoOne + CoreDataClass.Swift" utilisé deux fois: '/ Users/Swasidhant/Desktop/demo again/DemoOne + CoreDataClass.Swift' et '/ Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again- hiinrbwwbmyfbrbctsfdzvudkkuy/Build/Intermediates/demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataClass.Swift ': 0: remarque: les noms de fichiers sont utilisés pour distinguer les mêmes déclarations privées: les noms de fichiers sont utilisés pour distinguer les déclarations privées: : erreur: nom de fichier "DemoOne + CoreDataProperties.Swift" utilisé deux fois: '/ Users/Swasidhant/Desktop/demo again/DemoOne + CoreDataProperties.Swift' et '/ Users/Swasidhant/Library/Developer/Xcode/DerivedData/demo_again-hiinrbwwbmyfbrbctsfdzvudk/Build/Intermediates/demo again.build/Debug-iphonesimulator/demo again.build/DerivedSources/CoreDataGenerated/Model/DemoOne+CoreDataProperties.Swift ': 0: remarque: les noms de fichiers sont utilisés pour distinguer les déclarations privées portant le même nom Command/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefaul Échec de t.xctoolchain/usr/bin/swiftc avec le code de sortie 1
J'ai cherché cela et obtenu des réponses disant que le fichier pourrait être présent deux fois dans le projet, ce qui n'est pas mon cas. Une autre solution que j'ai trouvée était de supprimer le fichier de la phase de construction et de l'ajouter à nouveau. Cela aussi n'a pas fonctionné. Est-ce une erreur de configuration du paramètre de construction? Ou autre chose?
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=
Le problème se produit en raison de la fonction de génération automatique de sous-classe Xcode .
Selon Quoi de neuf dans les données de base
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.
- Catégorie/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.
Donc, pour résoudre votre problème, vous devez définir la valeur du champ Codegen
sur Manual/None
comme indiqué ci-dessous:
Voici ce que j'ai fait pour résoudre ce problème,
Peut aider quelqu'un, allez à la source de compilation du projet, supprimez la référence supplémentaire, le cas échéant.
Sélectionnez le modèle de données de code, puis sélectionnez l'entité, modifiez la valeur de 'Codegen' en Manuel/Aucun.
Ça va marcher.
Le problème était dû à un deuxième fichier nommé: "Extensions.Swift" dans mon projet.
Après avoir supprimé le "Extensions.Swift" en double, l'erreur a été résolue. Votre message d'erreur peut vous indiquer quel fichier est dupliqué.
Dans mon cas, le modèle de données (par exemple: MyCoreData.xcdatamodeld) a été répertorié deux fois sous Editeur -> Créer une sous-classe NSManagedObject ... Et voici pourquoi il obtenait ce type d'erreur.
Ce que j'ai fait:
Cela m'est arrivé lorsque j'ai copié et renommé entité. Il n'a pas réussi à renommer la classe, alors faites-le manuellement.