9

我们的应用程序支持 iOS 12 及更高版本,但我们在应用程序中有两个新的本地框架“Jello”和“Wizdom”,但它们仅支持 iOS 13 及更高版本(因此它们可以使用 Combine 和 SwiftUI)。

该应用与 Jello、Wizdom、Combine 和 SwiftUI 的链接较弱。该应用程序的主要 BaseUI 模块实际上是导入 Jello 的。BaseUI 支持 iOS 12 及更高版本,因此它也弱链接到 Jello 等。

但是我们遇到了一个问题,BaseUI 由于错误而无法编译:Compiling for iOS 12.0, but module 'Jello' has a minimum deployment target of iOS 13.0.

如何使导入以 iOS 13 可用为条件(即,如果 iOS 13 不可用,则不要导入它)?

(到目前为止,我发现的唯一解决方法是在 Jello 周围创建一个 Objective C 包装器并通过该包装器访问它,但这既尴尬又笨拙。我也尝试用它来包装整个文件,#if canImport(SwiftUI) ... #endif但这也不起作用,因为它似乎这只是一个编译时检查。)

4

1 回答 1

0

您是否尝试按照这篇文章中的说明有条件地导入框架:Conditionally import a framework (such as Speech) based on iOS Version in Swift?? 这里有一个完整的解释 但是,主要信息是你可以在框架的“目标”部分->“构建阶段”->“链接二进制与库”->框架的“状态”下定义为可选在 iOS 12 上可用。

您还必须使用带有@available 标记的库来包装代码。

于 2020-08-06T12:45:41.863 回答