在我的 'MyApp-Swift.h' 中找不到 *** 的协议声明

Cannot find protocol declaration for *** in my 'MyApp-Swift.h'

我正在做一个项目,到目前为止,尽管一团糟,但它工作正常。今天信不信我已经更新到Swift5.

该项目有 iOS 和 tvOS 目标以及框架、测试和 top selves 扩展。该项目也是使用 Objective-C 开始的,多年来已成为 90% Swift。

我不确定什么地方出了问题,但是在编译时,我的所有顶级自扩展(主要是所有 tvOS 目标)都出现以下错误。

我发现了类似的问题,但我不明白这是怎么回事。

有什么想法吗?

您可能在定义 IAPHelper 的 Swift 文件中遗漏了 import StoreKit。有时这会被传递导入,Swift 不一定需要它,但 Swift 桥接 header 需要。

最终你需要确保有一个 ObjC @import StoreKit; 在这行代码之前被评估。

首先,我要感谢 Rob 的提示。希望他能拿分!

根据提供的提示进行故障排除后:

  • 将 StoreKit 添加到您的链接框架列表中。 -> 无效
  • @import StoreKit;在#import <...-Swift.h> 之前 -> 显示当模块被禁用时错误使用@import

我还看到“...-Swift.h”仅在我的“...Topself”目标的构建设置中声明。仍然很不确定为什么我会认为整个项目仍然具有 ObjC 依赖项......对这个挑战来说仍然很新。

此外,如果我展开错误,我可以看到在尝试查找“...-Swift.h”文件时出现了某种错误。

此时我想起来我正在使用cocoapods(我不喜欢你,你不喜欢我的关系)而且我讨厌看到警告“...Overrides Enable modules (C - Objective-C)" 所以我将它设置为整个项目的默认值。

事实证明,对于所有“...TopSelf”目标,默认值为 NO。

通过将启用模块 (C - Objective-C) 覆盖为是、清理和构建,一切都重新开始工作。