如何有选择地导入Framework并基于iOS版本实现扩展?



我有一个用Swift编写的iOS应用程序,需要在iOS 13及更高版本上运行。

问题:

  1. 我有两个框架,一个只存在于iOS 13 SDK,另一个只存在于iOS 14 SDK
  2. 对于每个框架,我需要实现一个扩展来执行特定的任务

:

  1. 我如何有选择性地导入正确的框架取决于它是否在iOS 13或iOS 14上运行?我研究了@available,canImport,#if defined,但没有一个做我上面描述的
  2. 我怎么能去实现扩展,使正确的扩展将被使用和编译器不对我大喊大叫?

据我所知,您无法根据特定的操作系统版本导入,但您可以使用canImport

#if canImport(UIKit)
// UIKit code
#elseif canImport(AppKit)
// AppKit code
#else
// Other Code
#endif

canImport的工作方式是,如果模块存在于你的搜索路径中,这是真的。- Swift论坛

最新更新