Dupliquer le symbole d'erreur lors de l'ajout d'NSManagedObject sous-classe, le lien dupliquer
J'ai essayé de créer NSManagedObject sous-classes (2 entités liées) automatiquement dans Xcode. Ils sont générés comme ceci:
Cependant, avant que je ne fais rien de plus, lorsque j'ai essayé de construire et exécuter, une erreur de lien se produire, comme indiqué:
duplicate symbol _OBJC_CLASS_$_Photo in:
/Users/Kefeng/Library/Developer/Xcode/DerivedData/Photomania-aellrakjngugnzcgrleiytvrfvyt/Build/Intermediates/Photomania.build/Debug-iphonesimulator/Photomania.build/Objects-normal/x86_64/Photo+CoreDataClass.o
duplicate symbol _OBJC_METACLASS_$_Photo in:
/Users/Kefeng/Library/Developer/Xcode/DerivedData/Photomania-aellrakjngugnzcgrleiytvrfvyt/Build/Intermediates/Photomania.build/Debug-iphonesimulator/Photomania.build/Objects-normal/x86_64/Photo+CoreDataClass.o
duplicate symbol _OBJC_CLASS_$_Photography in:
/Users/Kefeng/Library/Developer/Xcode/DerivedData/Photomania-aellrakjngugnzcgrleiytvrfvyt/Build/Intermediates/Photomania.build/Debug-iphonesimulator/Photomania.build/Objects-normal/x86_64/Photography+CoreDataClass.o
duplicate symbol _OBJC_METACLASS_$_Photography in:
/Users/Kefeng/Library/Developer/Xcode/DerivedData/Photomania-aellrakjngugnzcgrleiytvrfvyt/Build/Intermediates/Photomania.build/Debug-iphonesimulator/Photomania.build/Objects-normal/x86_64/Photography+CoreDataClass.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
J'ai essayé à plusieurs reprises par la création de nouveaux projets et faire la même chose. Mon intention de départ est d'ajouter quelques méthodes personnalisées dans ces classes. Mais quand je ajouter quelque chose par ex. Photo+CoreData.h/m
, la même erreur que ci-dessus a montré jusqu'à.
J'ai trouvé certaines réponses à propos de la "double inclusion" ou "enregistrer les fichiers dans le répertoire incorrect", mais je ne l'ai pas fait. Quelqu'un a une idée à ce sujet?
- J'ai exactement le même problème. Pas de solution pour le moment... mais vous n'êtes pas seul...
- Si vous êtes en utilisant Xcode 8 alors c'est la réponse: stackoverflow.com/a/38413941/3346202
Vous devez vous connecter pour publier un commentaire.
Si vous ne génère pas de sous-classe d'objets gérés automatiquement, alors n'oubliez pas de cocher la case "Codegen" paramètres d'une Entité dans le Modèle de Données de l'Inspecteur:
Edit:
Grâce à l'aide de @iPeter a révélé ce qui suit:
Après avoir fait de l'Éditeur > Générer NSManagedObject fichiers, si vous supprimez les fichiers AVANT de construire, votre projet doit construire pas de problèmes.
Puis #import "myManagedObjectName+CoreDataClass.h" (où le MO nom est celui de l'entité inspecteur dans la base de données) dans toutes les classes où vous avez besoin de ces Objets Gérés.
En d'autres termes, vous n'avez pas besoin de réelle ManagedObject fichiers dans votre dossier. Xcode garde le générés dans votre Dérivé du dossier de Données.
Si pour une raison quelconque vous avez besoin de ces fichiers restent dans votre répertoire de fichiers, la solution de contournement suivante de travail.
Accédez à votre Cible et de supprimer les CoreDataClass sources Compiler les Sources.
Vous laissant avec cette:
Juste écrit un post de blog qui comprend cette info pour toute personne intéressée.
Vous devez supprimer toutes ces entités, le changement "Codegen" paramètres "manual" (Manuel/None" pour eux dans le Modèle de Données de l'Inspecteur, et de générer à nouveau les entités. Il fonctionne bien! Vous n'avez pas besoin de supprimer +CoreDataClass.h des fichiers à partir de la Compilation de la Source. Vous n'avez pas besoin de marquer des entités abstraites. Vous n'avez pas besoin de générer des classes par vous-même. Vous devriez changer seulement "Codegen" paramètres et de régénérer les entités automatiquement.
Vous devez supprimer le CoreData les sous classe générée par vous-même, et vous pouvez garder la ligne #import avec les classes, maintenant, tous les fichiers seront générés automatiquement lors de la construction du projet.
fin de post ... mais pour moi, c'était tout simplement un copier coller d'une entité, Xcode ne semble pas changer le nom de la classe associée à l'entité (observé sur Xcode 9.0.1)
J'ai récemment essayé la réponse ci-dessus et il a échoué.
En quelque sorte, Xcode était encore générer les fichiers.
Je l'ai résolu en utilisant la méthode suivante:
Cela ressemble à un bug dans Xcode...