作者:刺客狙侠者 | 来源:互联网 | 2023-02-13 06:43
我有一个包含Core Data,storyBoard和3个类的项目.Core Data的目的是在MapKit上保存位置,但是当我创建NSManagedObject的子类"Spot"时,我得到了这个Buildtime错误.它说:
duplicate symbol _OBJC_METACLASS_$_Spot in:
/Users/vitorferreira/Library/Developer/Xcode/DerivedData/CoreDataCity-buwqjxltijduybepebqqghhkrqwe/Build/Intermediates/CoreDataCity.build/Debug-iphonesimulator/CoreDataCity.build/Objects-normal/i386/Spot.o
/Users/vitorferreira/Library/Developer/Xcode/DerivedData/CoreDataCity-buwqjxltijduybepebqqghhkrqwe/Build/Intermediates/CoreDataCity.build/Debug-iphonesimulator/CoreDataCity.build/Objects-normal/i386/Spot+CoreDataClass.o
ld: 2 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
在之前的评论中(这是一个经过编辑的问题) - 据说原因是图书馆中存在重复的代码......但老实说,我没有得到它......任何帮助都会得到很大的帮助
1> Warren Burto..:
NSManagedObject
如果您将实体Codegen
模式设置为Class Definition
或,则默认情况下,Xcode 8.2(或更早版本)会完全无形地自动创建子类文件Category/Extension
.
因此,如果您将实体设置为此模式...
不要使用编辑器>创建NSManagedObject子类手动生成...或者您将拥有两个副本和重复的符号.
自动生成的文件位于派生数据文件夹中.您可以命令单击对象以获取其定义.
并且您可能会发现在添加实体或进行重大更改时需要使用Clean-> Build周期来获取实体.
如果您不希望此行为切换Codegen
到Manual/None
注意
2017年2月 - 模板不是100%正确,class func fetchRequest()
由于模糊不清,生成的模板不可用.