首页 > 解决方案 > iOS 应用程序或 Playground 中的进程是否始终未解决?

问题描述

在 iOS 应用程序中,我想使用具有以下功能的文件:

public func system(_ body: String) throws {
    if #available(macOS 10.0, *) {
        let process = Process()

        ...

    } else {
        fatalError()
    }
}

然后,即使我应用了可用性条件并且我没有调用此功能,我也遇到了一个休闲错误:使用未解析的标识符“进程”。

我在 Playground 中尝试了类似的代码,但我得到了同样的错误。

我通过这个问题了解到我们不能以常规方式在 iOS 应用程序中使用 Process:如何在 Swift 4 中执行终端命令?,并且我有一个解决方案,我通过每个使用平台将这些代码与文件分开。但如果可以的话,我想使用这个单一的文件。

请为我的理想提供另一种解决方案。

标签: iosswiftswift4platform

解决方案


if #available()对操作系统版本进行运行时检查

if #available(macOS 10.0, *)

评估true代码是否在 macOS 10.0 或更高版本上运行, 或者在 iOS/tvOS/watchOS 上运行,并且操作系统至少是最低部署目标。

您想要的是条件编译,具体取决于平台:

#if os(macOS)
let process = Process()
#else
// ...
#endif

推荐阅读