创建 NSManagedObject 子类导致链接器错误重复符号
Posted
技术标签:
【中文标题】创建 NSManagedObject 子类导致链接器错误重复符号【英文标题】:Creating NSManagedObject subclass leads to linker error duplicate symbols 【发布时间】:2017-01-07 12:36:47 【问题描述】:我正在尝试通过转到编辑器菜单然后选择创建 NSManagedObject 子类来创建一个 nsmanagedobject(用户)...这会生成四个文件:
User+CoreDataClass.h
User+CoreDataClass.m
User+CoreDataProperties.h
User+CoreDataProperties.m
在我的一个视图控制器中,我导入 User+CoreDataClass.h,然后使用以下代码:
//create new account entity
User* thisUser = [NSEntityDescription
insertNewObjectForEntityForName:@"User"
inManagedObjectContext:self.myController.myDataManager.managedObjectContext];
当我构建应用程序时,我收到以下 clang 错误:
duplicate symbol _OBJC_CLASS_$_User in:
/Users/xxxxxxxxxxxx/Library/Developer/Xcode/DerivedData/StarDate-fzkjccyoiwhfvvczdwkvkmtbioqw/Build/Intermediates/StarDate.build/Debug-iphonesimulator/StarDate.build/Objects-normal/x86_64/User+CoreDataClass.o
duplicate symbol _OBJC_METACLASS_$_User in:
/Users/xxxxxxxxxxxx/Library/Developer/Xcode/DerivedData/StarDate-fzkjccyoiwhfvvczdwkvkmtbioqw/Build/Intermediates/StarDate.build/Debug-iphonesimulator/StarDate.build/Objects-normal/x86_64/User+CoreDataClass.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我尝试清理应用程序并删除我的派生数据,但没有任何结果。我可以清除错误的唯一方法是删除生成的文件。这显然不是我需要的。为什么 XCode 会从此菜单命令创建重复文件?有没有我错过的设置?
谢谢
【问题讨论】:
【参考方案1】:您正在手动创建 Xcode 8 已经为您创建的 NSManagedObject
子类,因此会得到重复的符号。
你可以在this answer找到详细的解决方法。
【讨论】:
谢谢,我实际上只是在另一个线程中阅读了解决方案。虽然给了你凹凸。 :)以上是关于创建 NSManagedObject 子类导致链接器错误重复符号的主要内容,如果未能解决你的问题,请参考以下文章
NSManagedObject 子类的 Swift 链接器错误实现具有所需初始化的协议
为啥自动创建的 NSManagedObject 子类没有“正确”标题?