ios - iOS 应用程序或 Playground 中的进程是否始终未解决?
问题描述
在 iOS 应用程序中,我想使用具有以下功能的文件:
public func system(_ body: String) throws {
if #available(macOS 10.0, *) {
let process = Process()
...
} else {
fatalError()
}
}
然后,即使我应用了可用性条件并且我没有调用此功能,我也遇到了一个休闲错误:使用未解析的标识符“进程”。
我在 Playground 中尝试了类似的代码,但我得到了同样的错误。
我通过这个问题了解到我们不能以常规方式在 iOS 应用程序中使用 Process:如何在 Swift 4 中执行终端命令?,并且我有一个解决方案,我通过每个使用平台将这些代码与文件分开。但如果可以的话,我想使用这个单一的文件。
请为我的理想提供另一种解决方案。
解决方案
if #available()
对操作系统版本进行运行时检查。
if #available(macOS 10.0, *)
评估true
代码是否在 macOS 10.0 或更高版本上运行,
或者在 iOS/tvOS/watchOS 上运行,并且操作系统至少是最低部署目标。
您想要的是条件编译,具体取决于平台:
#if os(macOS)
let process = Process()
#else
// ...
#endif
推荐阅读
- java - 将 OneToOne 级联与自定义子存储库一起使用
- javascript - 在特定区域获取 DOM 元素的最佳(最快)方法是什么
- python-3.x - 是否有算法将图像细分为较小的三角形以进行opengl渲染?
- amazon-web-services - 我可以使用单独的云存储并将其连接到 mapbox 吗?
- ios - Firebase:保留在 observeSingleEvent 中分配的值
- c - c:具有 nanopb (protobuf) 的重复字段的默认值
- android - 未解决的参考:在 gradle 中添加必要的工具并更新到 kotlin 最新版本后进行 Parcelize
- c++ - 示例 Shell 应用程序显示的 V8“分段错误(核心转储)”错误
- java - REST API:URL 中的 JSON 对象以获取自定义 JSON
- akka - 类型为 2.6.3 的 akka 的日志记录问题