Swift 4.2有一个特殊的条件canImport
帮助开发人员检查一个模块是否可以被导入到项目中。这个条件在Swift 4.1中引入。
现在我正在编写使用Objective-C编写的iOS项目。我使用模块,每个目标对应不同的模块。这就是为什么我想要使用类似如下的内容:
#if canImport(SomeModule)
@import SomeModule;
#endif
我该如何解决这个问题?现在我为每个目标使用不同的“其他C标志”,但我希望找到更加灵活的解决方案。
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
}
__has_include
仍然返回true。 - Dávid Pásztor