SwiftUI小工具:导入的Objective-C标头文件

问题描述

将Objective-C类(通过桥接标头)导入我的 SwiftUI小部件扩展目标时遇到构建错误

Objective-C类定义一个接受UILabel参数的方法方法生成窗口小部件时,在“ UILabel ”上的方法声明中收到错误:“ 期望类型”。我实际上不需要在SwiftUI项目中利用此方法,但这是我确实需要导入的类的一部分。

我尝试了将UIKit框架添加到Widget扩展目标,并尝试了导入UIKit标头快速桥接文件中。不走运,我收到同样的错误

我想知道在目标上使用SwiftUI并在导入的Objective-C文件中使用UIKit是否存在不兼容性问题?要允许我的SwiftUI扩展识别UIKit类,我还需要做些其他事情吗?

解决方法

问题不是我的小部件扩展,或与SwiftUI共享UIKit类。我意识到,我的桥接标头已在其他扩展程序中共享(Siri,Watch),这些扩展程序不支持UIKit (或者至少不包括UIKit框架)。将UIKit依赖标头添加到共享桥接标头中会导致这些其他扩展构建失败

为解决我的问题,我创建了一个与小部件目标 only 关联的第二个桥接头,现在我可以在其中包含依赖UIKit的Objective-C类。 / p>

,

是的。因此,您需要在SwiftUI窗口小部件目标中设置“ Objective-C BridgingHeader”,然后将标头中的Objective-C文件导入到SwiftUI类中。