gpt4 book ai didi

swift - Swift 代码有没有办法检测它是否在 Playground 上运行?

转载 作者:可可西里 更新时间:2023-11-01 00:52:19 25 4
gpt4 key购买 nike

为了能够测试 GameKit 功能,我希望能够检测代码是否正在 Playground 中运行,以便它可以跳过网络调用。有办法做到这一点吗?

编辑:

忘掉 GameKit——它只会混淆问题。在许多不同的场景中这会很有用。这实际上只是一个关于特定函数调用是否存在的简单问题:如果代码在 Playground 中运行,是否有返回 true 的方法?

最佳答案

我不知道有记录的方法可以做到这一点,但您可以做一些未记录的事情。

这是一种在 macOS 和 iOS Playground 中都适用于带有 Swift 2.2 的 Xcode 7 和带有 Swift 3.0 的 Xcode 8 的技术:检查标识符以 "com.apple.dt" 开头的包>.

// Swift 2.2

if NSBundle.allBundles().contains({ ($0.bundleIdentifier ?? "").hasPrefix("com.apple.dt.") }) {
print("in playground")
} else {
print("not in playground")
}


// Swift 3.0

if Bundle.allBundles.contains(where: { ($0.bundleIdentifier ?? "").hasPrefix("com.apple.dt.") }) {
print("in playground")
} else {
print("not in playground")
}

请注意,com.apple.dt. 不是专门为 playground 相关包保留的前缀; dt 部分标准,类似于“开发者工具”。因此,在某些情况下,您可能会得到误报:有一个匹配的包,但您不在 Playground 上。我不知道有任何这样的情况,但可能有一些。我确实在 Xcode 7 下的 macOS xib 中测试了一个 IBDesignable View ,它没有加载任何 com.apple.dt. 包。

关于swift - Swift 代码有没有办法检测它是否在 Playground 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com