如何为iOS和OS X编写通用swift代码.在cocoa中我可以使用#ifdef,我现在该怎么办?

Jac*_*rse 15 import macros preprocessor conditional-compilation swift

对于我们的项目,我们总是为两个平台使用一个源文件:iOS和OS X.现在我正在迁移到swift.不幸的是,有一些文件需要

import Cocoa
Run Code Online (Sandbox Code Playgroud)

在iOS上

import UIKit
Run Code Online (Sandbox Code Playgroud)

以前我们做过

#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
#import <Cocoa/Cocoa.h>
#else
#import <UIKit/UIKit.h>
#endif
Run Code Online (Sandbox Code Playgroud)

你知道如何在swift中完成这项工作吗?我不喜欢每次写两次因为没有宏了.

提前致谢

插口

Kir*_*ins 25

使用:

#if os(OSX)
    import Cocoa
#elseif os(iOS)
    import UIKit
#endif
Run Code Online (Sandbox Code Playgroud)

  • 查看手册中的"预处理器指令":https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_20 (2认同)

gun*_*bur 6

由于os(OSX)在 Swift 5/Xcode 12 上不再起作用,请使用:

#if os(macOS)
    import Cocoa
#elseif os(iOS)
    import UIKit
#endif
Run Code Online (Sandbox Code Playgroud)