Xcode:i386架构未定义符号

5
坦白说,我在OBJ-C方面经验不足。 我在Stack Overflow和其他页面上努力寻找解决方案,但仍然无法解决我的问题。 在学校的期末项目中,我必须编写一个iOS应用程序,该应用程序应能够显示来自MySQL数据库的数据。我查看了Code with Chris的一篇文章(http://codewithchris.com/iphone-app-connect-to-mysql-database/#creatingphpservice),并尝试根据我的学校规格进行修改。
所以这是我的错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_Data", referenced from:
objc-class-ref in HomeModel.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经发现这意味着我的HomeModel文件想要访问我在Data.h中定义的“Data”类。但我已经将“Data.h”导入到了我的“HomeModel.m”(以及“HomeModel.h”,尽管我认为这是不必要的)。
有人知道如何解决这个问题吗?
PS:我已经检查了我的项目的“编译源文件”。

2
你需要确保 Data.m 被选中为你的目标。 - rmaddy
@rmaddy:你的意思是我必须确保“Data.m”已经添加到我的项目的“编译源文件”中,对吗?如果你是这个意思...是的,我已经检查过了。 - S.Schweng
1
Data.m文件中是否有"@implementation Data"这一行? - rmaddy
@rmaddy:非常感谢!这解决了我的问题! - S.Schweng
你的 Data.m 文件里面有什么内容? - rmaddy
显示剩余3条评论
2个回答

3
我曾经遇到过同样的问题,只要将 Build Settings > Architectures 设置为 "标准架构" ,并将 Build Settings > Valid Architectures 设置为 "armv7 armv7s armv8 arm64" ,应用到我的所有项目和目标中,这个警告就消失了。 希望这能帮到你。

不行,这肯定不对,因为缺失的类明显是项目源代码树的一部分,而不是由项目链接的库的一部分。 - trojanfoe
我非常确定警告信息是“Undefined symbols for architecture i386:”,并且看起来完全一样。因为我有不同的项目(cocoapods),其中一些选择了不同的架构。你可以试试。 - jeprubio
是的,可能是相同的问题,然而重要的信息是缺失的类或函数符号。如果该符号是源树的一部分或者通过库提供,那么需要不同的解决方案。OP的是前者,而你的是后者。 - trojanfoe

2

非常感谢您的回答和评论!

正如我之前提到的,我真的不是Obj-C方面的专家,当然这是一个非常愚蠢的错误...

我的"Data.m"文件完全为空。

我只需要添加这几行:

#import "Data.h"

@implementation Data
@end

再次感谢您抽出时间关注我的“问题”!哈哈

如果这就是你整个Data.m文件的全部内容,那这个类的意义在哪里呢?Data.h文件中有什么? - rmaddy
这里只有一个名为“Data”的类,其中包含一些属性。我几天前开始处理我的项目的这个部分。 - S.Schweng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接