有没有办法为 Xcode Playground 设置部署目标

use*_*929 20 xcode swift swift-playground xcode12

我已升级到 MacOS 11 (Big Sur) Beta 4。和 Xcode 12 beta 4。

我有一个 Swift 游乐场和合并发布者:

Just([1,2,3])
    .setFailureType(to: Error.self) // Make the compiler pick up new API in MacOS Big Sur
    .flatMap { $0.publisher }
    .sink(receiveCompletion: { print($0) }, receiveValue: { print($0) })
Run Code Online (Sandbox Code Playgroud)

升级后,我的 Playground 开始失败,并显示以下消息:“'flatMap(maxPublishers:_:)' 仅在 macOS 11.0 或更高版本中可用”。快速编译器不会指示代码中的任何错误。如果将代码放置在普通的 Xcode 命令行应用程序项目中,则代码可以正常工作。

if #available(macOS 11.0, *) { }可以通过将发布者纳入可用性检查(例如在游乐场中)来减轻错误。

我假设这是一个错误,并且我已向 Apple 提交了问题。

或者这是预期的行为?如果是……有没有办法向游乐场暗示要假设的部署目标?如果它没有正确获取正在运行的操作系统的实际版本。

谢谢!

Swi*_*hav -1

不幸的是,没有直接的方法来设置 Xcode Playground 的部署目标。Playgrounds 是为快速实验和学习而设计的,与成熟的 Xcode 项目相比,它们的 API 是有限的。但是,您可以根据您的具体需求使用一些解决方法:

  1. 定位特定的 iOS 版本:虽然您无法直接设置部署目标,但您可以在运行 Playground 时选择要模拟的 iOS 版本。转到导航栏中的 Playground 设置(齿轮图标)。在平台下,选择所需的 iOS 版本。这可确保您编写的代码针对该版本并避免潜在的兼容性问题。
  2. 调整 macOS Playgrounds 的语言功能:对于 macOS Playgrounds,您可以通过 Swift 包影响可用的语言功能。安装仅支持您所定位的 macOS 版本的 Swift 软件包。这间接限制了 Playground 与所选 macOS 部署目标保持一致的能力。
  3. 使用单独的 Xcode 项目:如果您需要精确控制部署目标和完整项目功能,请在 Playground 旁边创建一个单独的 Xcode 项目。开发项目中的核心功能,然后将特定部分导入 Playground 中进行交互式探索。这种方法可以更好地控制部署目标和项目结构。请记住:Playgrounds 并不适合生产就绪的代码。如果需要严格的部署目标控制,可以考虑使用传统的Xcode项目进行开发和测试。

  • Swift Playground (.swiftpm) 文件没有“部署目标”部分。只有“常规”、“签名和功能”和“包”部分。常规仅包含“应用程序设置”,并且没有像典型 Xcode 项目中那样设置部署目标的选项。 (2认同)