Swift UI:iOS所需的代码使MacOS构建崩溃

恶魔

我正在使用SwiftUI为iOS和MacOS编写应用程序。

我的电台播放器在iOS的后台模式下需要此代码

 private func checkSession() {
        do {
            try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay])
            print("Playback OK")
            try AVAudioSession.sharedInstance().setActive(true)
            print("Session is Active")
        } catch {
            print(error)
        }
    }

不幸的是,当我尝试针对MacOS进行构建时,出现以下错误:

AVAudioSession'在macOS中不可用'setActive'在Swift sharedInstance()中不可用'在macOS中不可用

保留我的iOS构建代码并在MacOS中获得工作代码的最佳方法是什么?

jnpdx

您可以使用以下代码有条件地注释掉代码:

#if os(macOS)

#endif

要么

#if os(iOS)

#endif

您还可以将代码拆分为仅对Xcode中的iOS或macOS目标可用的文件。

这对于扩展尤其有用。例如,您可能会遇到以下情况:

extension MyAudioManager {
  func setup() {
    //do iOS setup
  }
}

以及适用于macOS的等效版本。然后,您可以.setup()从共享文件中调用,并且该方法在任一平台上仍然可用。

使用条件编译的策略可能看起来像这样:

extension MyAudioManager {
#if os(iOS)
  func setup() {
    //do iOS setup
  }
}
#endif
#if os(macOS)
  func setup() {
    //do macOS setup
  }
}
#endif

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章