【发布时间】:2020-11-26 17:04:03
【问题描述】:
我们的应用支持 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 包装整个文件,但这也是不起作用,因为这似乎只是一个编译时检查。)
【问题讨论】:
-
这是我自己一直在苦苦挣扎的一个问题,遗憾的是我找到的唯一解决方案是将本地框架的部署目标设置为与我的应用程序目标相同的版本。但是,这会强制在这些框架中使用
@available,即使它们只会在 iOS 上使用,因为它们对 Combine 和 SwiftUI 有很强的依赖。我认为完全迁移到 Swift Package Manager 将是一个解决方案 - 希望 Xcode 12 将成为可能。
标签: swift xcode frameworks ios13