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

问题描述 投票:0回答:1

我正在做一个项目,到现在为止,尽管乱七八糟,但还算正常。今天,不管你信不信,我已经把它更新到Swift 5了。

这个项目有iOS和tvOS的目标,以及框架、测试和顶自我的扩展。这个项目也是用Objective-C开始的,这些年已经变成了90%的Swift。

我不知道在什么时候出了问题,但在编译时,我的所有top self扩展(大部分是所有tvOS Targets)都得到了以下错误。

enter image description here

我也找到了类似的问题,但我不明白是怎么回事。

有什么想法吗?

ios swift tvos
1个回答
1
投票

你可能缺少一个 import StoreKit 在定义IAPHelper的Swift文件中。有时这个会被顺便导入,Swift不一定需要它,但是Swift桥接头需要。

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


0
投票

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

用提供的提示排除故障后。

  • 将StoreKit添加到你的链接框架列表中。-> 没用
  • @import StoreKit; before #import < ...-Swift.h> -> Showed。当模块被禁用时,错误地使用了@import。

我还看到"...-Swift.h "只在我的"...Topself "目标的Build设置中被声明。我仍然不知道为什么,因为我认为整个项目仍然有ObjC依赖...... 对于这个挑战,我还是很陌生。

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

这时,我想起了我使用的是cocoapods(我不喜欢你,你不喜欢我的关系),我讨厌看到"...覆盖启用模块(C - Objective-C)"的警告,所以我把它设置为整个项目的默认值。

原来,对于所有的"...TopSelf "目标,默认值是NO。

通过将 "重写启用模块(C - Objective-C)"改为YES,清理并构建,一切又开始工作了。

© www.soinside.com 2019 - 2024. All rights reserved.