Xcode 更新后 Swift Playgrounds 无法正常运行

Posted

技术标签:

【中文标题】Xcode 更新后 Swift Playgrounds 无法正常运行【英文标题】:Swift Playgrounds aren't acting correctly after Xcode Update 【发布时间】:2017-03-27 23:42:59 【问题描述】:

我一直在制作一个使用touchesBegan 方法来接受用户交互的Swift Playground。它与我从互联网上下载的 NewtonsCradle 和其他 Swift Playground 一起运行良好。但我刚刚将我的 Xcode 更新到版本 8.3 并且 NO Swift 游乐场目前正在运行。

我的 Swift Playground 不再接受任何用户输入。 例如,我设置了一个测试视图,当我点击它时“触摸”不打印:

class TestView : UIView 
public init() 

    super.init(frame:CGRect(x: 0, y: 0, width: 50, height: 50))




required init?(coder aDecoder: NSCoder) 
    fatalError("init(coder:) has not been implemented")


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    print("touched")


override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 




override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) 


override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) 




var controller = TestView()
PlaygroundPage.current.liveView = controller
PlaygroundPage.current.needsIndefiniteExecution = true

我还尝试运行 NewtonsCradle 代码(针对 Swift 3.0 更新的代码,所以这不是问题),球确实响应用户交互,它们只是自己摆动。看到这张卡在左上角的照片:

任何人都知道出了什么问题,或者我能做什么?我真的很需要时间来完成这项工作。我也无法回滚到以前版本的 Xcode,因为我需要 Playground 才能使用最新版本。

编辑:我刚刚更新到 MacOS 10.12.4,它仍然坏了。有什么帮助吗?

编辑 2:我已经让其他人确认这是他们的问题。也许其他人也可以确认这一点,如果可能的话,也可以提交一份 Apple 错误报告或提出修复。

【问题讨论】:

我目前遇到了同样的问题,过去几天我一直在努力解决这个问题。我认为您需要确保您接受输入的类是UIViewController 的子类。我很确定视图控制器允许在第一次运行后继续执行操作。 据我所知,Apple 正在解决这个问题。同时,我建议您降级到旧版本的 Xcode 并使用它,直到它被修复。你可以在这里得到:developer.apple.com/download/more/?name=Xcode @matt 显然这样的事情正在工作,但似乎与用户交互无关。 【参考方案1】:

Here 是 Apple 工程师提供的快速解决方案

您只需要退出 Xcode 并在终端中执行以下命令:

defaults write com.apple.dt.xcode IDEPlaygroundDisableSimulatorAlternateFramebuffer -bool YES

在我更新到 Xcode 8.3 后所有 UIPanGestureRecognizers 都停止工作的情况下,它有所帮助。

另请注意,这会降低渲染游乐场的质量。

【讨论】:

事实证明,这打破了我的视图大小。哦,好吧,猜我们正在等待它再次被苹果修复【参考方案2】:

有很多解决方案:

清理 Xcode (Shift+Command+K) 深度清理 Xcode(Shift+Option+Command+K) 非常干净的 Xcode(删除 /Library/Developer/DevrivedData

如果还是不行,重新安装 Xcode:

运行:

sudo /Developer/Library/uninstall-devtools
sudo rm -rf /Developer

然后从applications文件夹中删除Xcode.app

【讨论】:

我应该如何清洁它?干净的 Xcode 变灰了?您还可以确认任何 Swift Playground 都在 Xcode 8.3 中为您工作吗?您可以运行类似我的示例代码并尝试单击它吗? @brettf 它对我有用,我一天前尝试过使用 Playground,但我还没有尝试过 NewtonsCradle,然后尝试重新安装 Xcode。

以上是关于Xcode 更新后 Swift Playgrounds 无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章

将代码更新到 xcode 9 和 swift 4 后应用程序崩溃

Xcode8/Swift 3 更新后缺少 Firebase 标头警告

Xcode 更新后 Swift Playgrounds 无法正常运行

更新到 Xcode 9 / Swift 4 后 AVCapture 出现奇怪的编译错误 [重复]

更新 Xcode 后,我的 Swift 3 项目无法正常运行,但构建成功

Alamofire 库 request.swift 文件中发生错误 - 更新到 xcode 8.1 后“任务使用不明确”