2

我正在尝试将遗留框架用作 Swift 包。该框架有一个通过 导入 UIKit 的伞头#import <UIKit/UIKit.h>文件,因此 swift 源文件不会显式导入 UIKit。通过 SPM 构建失败并显示如下错误消息:error: cannot find type 'UIFont' in scope. 如果我更改源文件以显式导入 UIKit,这些错误就会消失,但似乎应该有一个 Swift 包管理器,相当于允许更广泛的导入。

有关特定项目和我当前的解决方法,请参阅此 PR:https ://github.com/i-schuetz/SwiftCharts/pull/419

4

1 回答 1

4

Swift 包需要有一个重新导出的 Swift 源文件UIKit

@_exported import UIKit

您只需要在您的包中作为保护伞的每个目标中的一个。

如果遗留框架不是你的,你可以创建你自己的 Swift 包,它的库目标声明了对框架的依赖,并重新导出了框架和UIKit,即使它只有一个带有@_exported import语句的文件。然后在你的项目中使用它,你需要import你的包装包而不是原始的框架包。

我认为您也可以使用模块图来做到这一点,但我需要对具体方法进行一些研究。

于 2021-04-07T19:29:58.577 回答