Macros 如何为iOS和macOS编写通用Swift代码。在可可中,我可以使用#ifdef,我现在该怎么办?

Macros 如何为iOS和macOS编写通用Swift代码。在可可中,我可以使用#ifdef,我现在该怎么办?,macros,swift,import,preprocessor,conditional-compilation,Macros,Swift,Import,Preprocessor,Conditional Compilation,对于我们的项目,我们总是为两种平台使用一个源文件:iOS和macOS(以前是OSX)。现在我正在迁移到斯威夫特。不幸的是,有些文件需要 import Cocoa 在iOS上 import UIKit 以前是这样的 #ifdef __MAC_OS_X_VERSION_MAX_ALLOWED #import <Cocoa/Cocoa.h> #else #import <UIKit/UIKit.h> #endif \ifdef\uuuuMac\uOS\ux\uversio

对于我们的项目,我们总是为两种平台使用一个源文件:iOS和macOS(以前是OSX)。现在我正在迁移到斯威夫特。不幸的是,有些文件需要

import Cocoa
在iOS上

import UIKit
以前是这样的

#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
#import <Cocoa/Cocoa.h>
#else
#import <UIKit/UIKit.h>
#endif
\ifdef\uuuuMac\uOS\ux\uversion\uMax\u允许
#进口
#否则
#进口
#恩迪夫
如何在Swift中实现这一点?我不喜欢仅仅因为不再有宏就编写每个类两次。

使用:

#if os(OSX)
    import Cocoa
#elseif os(iOS)
    import UIKit
#endif
由于
os(OSX)
不再适用于Swift 5/Xcode 12,请使用:

#if os(macOS)
    import Cocoa
#elseif os(iOS)
    import UIKit
#endif

这最后是不是意味着,swift还内置了一个预处理器?请查看手册中的“预处理器指令”:哦,我没有看到这一章。这很有帮助。非常感谢。有没有更好的方法制作一行呢?;)