Xcode游乐场被困在'Running playground'或'启动模拟器'上并且不会运行代码,该怎么办?

Emi*_*ald 126 xcode ios xcode8

每次我为了测试一些代码而创建一个新游乐场时,Xcode都会卡住并且不会运行代码.它只是在屏幕顶部显示"Running playground"或"Launching simulator"语句,加载图标很可能在它旁边旋转,但没有任何反应.有时这会无限期地继续,有时Xcode会停止并将其打印到控制台:

Playground execution failed: error: Couldn't lookup symbols:
__swift_FORCE_LOAD_$_swiftCoreImage 
__swift_FORCE_LOAD_$_swiftFoundation 
_playground_log_hidden 
_playground_logger_initialize 
_playground_log_postprint 

thread #1: tid = 0xc0cd0, 0x000000010ea7c3c0 MyPlayground`executePlayground, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2

frame #0: 0x000000010ea7c3c0 MyPlayground`executePlayground
frame #1: 0x000000010ea7b9c0 MyPlayground`__37-[XCPAppDelegate enqueueRunLoopBlock]_block_invoke + 32 
frame #2: 0x000000010f59625c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
frame #3: 0x000000010f57b304 CoreFoundation`__CFRunLoopDoBlocks + 356
frame #4: 0x000000010f57aa75 CoreFoundation`__CFRunLoopRun + 901
frame #5: 0x000000010f57a494 CoreFoundation`CFRunLoopRunSpecific + 420
frame #6: 0x0000000114985a6f GraphicsServices`GSEventRunModal + 161
frame #7: 0x0000000110124f34 UIKit`UIApplicationMain + 159
frame #8: 0x000000010ea7b6e9 MyPlayground`main + 201
frame #9: 0x0000000112ad268d libdyld.dylib`start + 1
frame #10: 0x0000000112ad268d libdyld.dylib`start + 1
Run Code Online (Sandbox Code Playgroud)

我在macOS Sierra 10.12上运行Xcode 8.0(8A218a).

硬件:
MacBook Pro(13"2012年中)
2,5 GHz英特尔酷睿i5
4 GB 1600 MHz Ram DDR3

我环顾四周,但至少这些线程都没有提供答案:
https ://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9

我已经尝试过的事情没有成功:

  • 重启Xcode
  • 重新安装Xcode(降级到7.3,但由于这没有帮助我升级回8.0)
  • 重启机器
  • 创建一个新的游乐场

您对如何解决这个问题有任何想法吗?我是编程新手,急切地想学习Swift,但是Xcode几乎不可能......

提前谢谢,干杯.

PAN*_*RMA 155

答.切换到macOS平台

当您创建Playground时,默认情况下它会选择iOS平台并自动导入UIKit.这是UIKit一直崩溃和卡住.如果您的(练习)代码不使用UIKit,那么您可以切换到MacOS平台.作为主要的iOS和MacOS之间(虽然不是精确的)区别是在了AppKit和UIKit.

在Xcode Playground的右上角,单击显示/隐藏实用程序 - >文件检查器 - >操场设置 - >平台 - > macOS

见下面的screenShot: 在此输入图像描述

  • 荒谬.3行代码(没有一行导入UIKit),我必须谷歌这个.很多人都会放弃并宣布斯威夫特无用. (10认同)
  • 这似乎对我有用,同时将操场执行按钮设置为手动.他们会不会解决这个问题,但这看起来有点无用 (3认同)
  • 这对我不起作用.我正在使用Xcode 9.4.1(不是测试版),我必须不断重启Xcode.相当蹩脚...... (3认同)
  • 谢谢,它在使用Foundation时效果很好,正是我需要的。我真不敢相信Playgrounds有这么多错误... (2认同)

小智 64

我尝试了以下内容,它对我有用:

  1. 按下底部的"停止操场"按钮
  2. 删除第一个注释行并将import语句作为第一行.导入以上没有空间.
  3. 按执行按钮

  • 为我工作.我无法相信这个bug有多荒谬.苹果应该感到羞耻. (21认同)
  • 我想补充一下重新启动Xcode的必要性.它似乎对我有用. (3认同)
  • 重新启动 Xcode 是唯一对我有用的事情 (2认同)

Kho*_* Vo 55

在我的情况下,Xcode 8.3.2,当我尝试以下步骤时,它工作:

  1. 文件 - >关闭"Name.playground"
  2. 文件 - >关闭游乐场
  3. 退出Xcode
  4. 重新打开Xcode

  • 除了我之外还提供一些东西,使用现代XCode的人是否能够深入了解这种失败的根本原因?事实证明这是最好的非侵入性工作,但是,我不会考虑解决问题的任何问题.操场标题中的评论真的有问题吗?那个苹果在事业方面说了什么? (2认同)
  • 嗯,解决IDE问题的方法很糟糕。 (2认同)

小智 49

即使在Xcode关闭后,Buggy Simulator的主要流程仍然有效.所以这是步骤:

  1. 退出Xcode;
  2. com.apple.CoreSimulator.CoreSimulatorService在Activity Monitor中杀死进程;
  3. 启动Xcode并运行您的Playground.

  • 与其他答案相比,我更喜欢这个答案,因为它更触及问题的核心 (2认同)

小智 20

根据我的经验,你应该:

  1. 通过按住:Playground左下角的►箭头并选择"手动运行"来防止Swift游乐场刷新
  2. 退出Xcde
  3. 重启Xcode

它工作得很好.

  • 但是,Playground 的全部意义不是按照编写的方式运行代码吗? (4认同)

Fiv*_*gle 15

我已经取消了第一行的评论.它为我解决了.关闭并重新启动Xcode并强制退出活动监视器中的com.apple.coresimulator后,请务必尝试


小智 12

添加导入PlaygroundSupport为我解决了问题:)

  • 有趣。你从哪里得到的? (2认同)

San*_*dhu 5

您可以切换到手动处理.它对我有用. 截图