gpt4 book ai didi

ios - 在单元测试-Swift 中找不到模块 "MyApp"

转载 作者:IT王子 更新时间:2023-10-29 08:20:57 25 4
gpt4 key购买 nike

我试图在我的遗留 Objc 代码中测试一些 Swift 类(@objc 类)。我在我的测试类中导入“UnitTests-Swift.h”。

然后我得到这个错误:

Module "MyApp" not found in the autogenerated "UnitTests-Swift.h"

这是“UnitTests-Swift.h”顶部的内容

typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
#if defined(__has_feature) && __has_feature(modules)
@import XCTest;
@import ObjectiveC;
@import MyApp;
@import CoreData;
#endif

我清理了项目,检查了所有相关标志("No such module" when using @testable in Xcode Unit testsCan't use Swift classes inside Objective-C),删除了派生数据等等。不知道发生了什么,但我很确定@import MyApp 不应该在那里。 .

谁能帮我解决这个问题?

最佳答案

刚在我的项目中遇到这个问题,经过一整天的调查,我终于解决了它。基本上发生这种情况是因为您在 ObjC 和 Swift 之间存在循环依赖。所以在我的例子中是:

  • 在主目标中使用 @obj 属性的 Swift 协议(protocol);
  • 继承此协议(protocol)的 UnitTest 目标中的 Swift 类;
  • 在您的 UnitTest 目标的任何 Objective-C 类中导入 UnitTestTarget-Swift.h

如此简单的组合导致了这个错误。为了解决这个问题,您需要:

  • 只需确保您在 UnitTest 目标中的 Swift 类是 private,因此它不会到达 UnitTestTarget-Swift.h

  • 不要将您的原始 Swift 协议(protocol)标记为 @objc,这将允许您从所有 ObjectiveC 测试类访问您的 SwiftClass,但这些类对 Swift 协议(protocol)一无所知。

关于ios - 在单元测试-Swift 中找不到模块 "MyApp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33688767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com