提问人:Scott Phares 提问时间:1/14/2018 最后编辑:Scott Phares 更新时间:1/14/2018 访问量:637
建筑x86_64的未定义符号:“_OBJC_CLASS_$_Person”,引用自:
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_Person", referenced from:
问:
我现在已经运行了这个应用程序几年了,只是在数据模型中添加一些字段,然后生成 NSManagedOjects(这甚至不是我更改的类之一。现在,我无法摆脱这个错误。我已经检查了 Person.m 和 Person+CoreDataProperties.m 是否在目标中。我构建了与所有其他课程相同的课程。我只是无法弄清楚错误在哪里。
我正在运行 Xcode 9.2。目标平台是 iOS 9(我的许多朋友仍在使用这个版本)。我在 MacOS 10.13.2 上。我花了整整三天的时间尝试了我能想到的一切。我删除了派生数据,启动和停止,Xcode,清理项目等。
请帮忙。
答:
0赞
danh
1/14/2018
#1
最可能的原因是定义 Person 的类未包含在您正在构建的目标中。在 Xcode 的文件导航窗格(最左侧)中,选择“Person.m”。在“文件检查器”窗格(最右侧,选择看起来像带有折叠角的正方形的图标)上,查看“目标成员身份”部分。你的目标应该被检查。
评论
0赞
Scott Phares
1/14/2018
谢谢,但正如我在问题中所说:它包含在目标中。我已经检查了目标中应该包含的所有文件都已针对目标进行“检查”。我已经检查过无数次了。此外,这不是一个新类 - 它已经在应用程序中存在多年。这就是令人沮丧的地方!
0赞
Scott Phares
1/14/2018
只是为了好玩,我从目标中取消了类 Person 并进行了编译。奇怪的是,我所有的 NSManaged 类都显示为未定义。我系统地将每个都加回来了,但我的所有类仍然收到未定义的错误。
0赞
Scott Phares
1/14/2018
还有一件事:在检查、取消检查、检查目标之后,我最终得到了四个未定义的类。这四个最近在数据模型中都进行了修改,我已经在这四个模型上运行了“创建 NSManagedObject”过程。还在挠头。
1赞
Scott Phares
1/14/2018
#2
我找到了一个对我来说毫无意义的解决方案:我在目标中包含了 CoreDataClass .m 文件,一切正常。我过去总是把他们排除在外,而在其他班级里也把他们排除在外。
评论
0赞
danh
1/15/2018
对不起,我错过了你关于目标包含模型类的观点。很高兴您找到了解决方案。您需要 CoreDataClass 也就不足为奇了,而且您曾经没有也感到惊讶。我将不删除我的答案,因为这是链接器问题的常见原因。
评论