Swift 4.2具有特殊条件canImport,可帮助开发人员检查是否可以在项目中导入模块。它是在Swift 4.1中引入的。

现在,我正在研究用Objective-C编写的iOS项目。我使用模块,对于每个目标,这些模块都是不同的。这就是为什么我要使用类似的东西:

#if canImport(SomeModule)
@import SomeModule;
#endif

我怎么解决这个问题?现在,我为每个目标使用不同的“其他C标志”,但我想找到更灵活的解决方案。

最佳答案

作为回答,这有点晚了,但是我在处理类似案例时遇到了这个问题。
我用了__has_include(<SomeModule/SomeModule.h>)导入框架:

#if __has_include(<SomeModule/SomeModule.h>)
#import <SomeModule/SomeModule.h>
#define __HAS_SOME_MODULE_FRAMEWORK__
#endif
稍后在您的代码中:
- (void)doSomething {
    #ifdef __HAS_SOME_MODULE_FRAMEWORK__
    // with  SomeModule framework
    #else
    // without  SomeModule framework
    #endif
}

07-24 09:24