0

在测试 XCTestCase 时,我似乎遇到了这个奇怪的问题。我创建了一个单元测试包,并将我的主应用程序设置为“目标”;现在我可以很好地针对我的核心数据 NSManagedObjects 编写测试,但是如果我在我的应用程序中包含任何不是 NSManagedObject 的其他内容,我会收到链接错误:

架构 x86_64 的未定义符号:“_OBJC_CLASS_$_iCloudListener”,引用自:SLTestToDoWithRepeatInterval.o 中的 objc-class-ref ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v查看调用)

这只发生在非 NSManagedObjects 上。并且 iCloudListener 肯定在主应用程序目标的编译源中。问题是,虽然我可以将这个特定的 iCloudListener 类添加到测试目标 -> 构建阶段 -> 编译源列表中,这将使这个特定的链接错误消失,但它引入了新的错误,因为它开始给出链接错误关于 iCLoudListener 类的所有头文件;如果我开始添加这些,它们需要越来越多的文件,以至于我必须将几乎所有的代码都包含到测试目标“编译源”部分中。

我在这里做错了吗?是否存在可能导致 Xcode 忽略非 NSManagedObject 类的设置?

4

1 回答 1

0

这是因为项目在编译源中插入了核心数据的xcdatamodeld文件。选择您的项目 -> 构建阶段 -> 编译源并删除projectName.xcdatamodeld文件。并检查您是否导入.m了文件而不是.h文件,它也会给出相同的链接器错误。检查所有#import 代码。并检查您是否在库中添加了核心数据框架工作并导入了核心数据.h文件。检查NSManagedObject的创建并导入它的文件。只要尝试一下,如果仍然有任何错误,请回复我。

于 2017-06-05T06:10:21.053 回答