Der Xcode-Spielplatz bleibt auf "Spielplatz ausführen" oder "Simulator starten" hängen und führt den Code nicht aus. Was ist zu tun?

144

Jedes Mal, wenn ich einen neuen Spielplatz erstelle, um Code zu testen, bleibt Xcode hängen und führt den Code nicht aus. Am oberen Rand des Bildschirms wird lediglich die Anweisung "Laufspielplatz" oder "Simulator starten" angezeigt. Das Ladesymbol dreht sich vielversprechend daneben, aber es passiert nichts. Manchmal wird dies auf unbestimmte Zeit fortgesetzt und manchmal hält Xcode an und druckt dies auf der Konsole aus:

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

Ich verwende Xcode 8.0 (8A218a) unter macOS Sierra 10.12.

Hardware :
MacBook Pro (13 "Mitte 2012)
2,5 GHz Intel Core i5
4 GB 1600 MHz Ram DDR3

Ich habe mich umgesehen, aber zumindest keiner dieser Threads hat eine Antwort geliefert:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9

Dinge, die ich bereits ohne Erfolg versucht habe:

  • Xcode neu starten
  • Neuinstallation von Xcode (auf 7.3 heruntergestuft, aber da dies nicht geholfen hat, habe ich wieder auf 8.0 aktualisiert)
  • Maschine neu starten
  • Einen neuen Spielplatz schaffen

Haben Sie Ideen, wie Sie dieses Problem lösen können? Ich bin neu in der Programmierung und versuche eifrig, Swift zu lernen, aber Xcode macht es praktisch unmöglich ...

Vielen Dank im Voraus, Prost.

Emil Osvald
quelle
Danke für ihre schnelle Antwort. Ich benutze den Spielplatz einfach, weil ich tatsächlich ein aktives Abonnement bei Treehouse.com habe und sie die Verwendung des Spielplatzes beim Testen neuer Konzepte fördern.
Emil Osvald
1
Ich verstehe, aber mein Gedanke ist, dass Sie "eifrig versuchen, Swift zu lernen" und im Moment stecken Sie fest. Wenn Sie ein neues App-Projekt erstellen und ausführen können, können Sie fortfahren. Wenn Sie jetzt auch kein App-Projekt ausführen können, haben Sie tiefere Probleme. :)
Matt
Das ist definitiv wahr. Vielen Dank für Ihre Eingabe matt, ich werde tun, was Sie vorgeschlagen haben, solange es keine bessere Lösung gibt. Ich werde diesen Thread trotzdem aktiv halten, falls jemand eine Lösung gefunden hat.
Emil Osvald
2
Ich habe hier keinen Rat zu geben, @EmilOsvald. Ich kann berichten, dass dies auch auf meinem MacBook häufig vorkommt (und die ganze Zeit, wenn ich auch iMacs verwendet habe, alle neuen Computer mit den neuesten Updates). Sie sollten sich nicht schuldig fühlen, wenn Sie Spielplätze nutzen möchten. Theoretisch sind sie ein großartiges Produkt und wenn sie arbeiten, sind sie es.
Ilias Karim
1
Vor dem ersten Kommentar sollten keine Leerzeichen stehen (wenn die erste Textzeile ein Kommentar ist), und in der ersten Zeile darf keine Leerzeile stehen. Gib mir Bescheid.
Daniel Springer

Antworten:

190

Ans. Wechseln Sie zur macOS-Plattform

Wenn Sie einen Spielplatz erstellen, wird standardmäßig die iOS-Plattform ausgewählt und UIKit automatisch importiert. Es ist das UIKit, das die ganze Zeit abstürzt und feststeckt . Wenn Ihr (Übungs-) Code UIKit nicht verwendet, können Sie zur MacOS-Plattform wechseln . Der Hauptunterschied (allerdings nicht genau) zwischen iOS und macOS besteht in APPKit und UIKit.

Klicken Sie in der oberen rechten Ecke Ihres Xcode-Spielplatzes auf Dienstprogramme ein- / ausblenden -> Dateiinspektor -> Spielplatzeinstellung -> Plattform -> macOS

Siehe Bildschirm unten: Geben Sie hier die Bildbeschreibung ein

PANKAJ VERMA
quelle
4
Dies schien für mich zusammen mit dem Einstellen der Schaltfläche zum Ausführen des Spielplatzes auf manuell zu funktionieren. Werden sie das jemals beheben, scheint es nur ein bisschen trashig
hoboBob
2
Danke, es funktioniert gut, wenn ich Foundation benutze, genau das, was ich brauchte. Ich kann nicht glauben, dass Spielplätze so viele Fehler haben ...
Adrien Yvon
15
Lächerlich. 3 Codezeilen (von denen keine UIKit importiert) und ich muss dies googeln. Viele Leute würden einfach aufgeben und Swift für nutzlos erklären.
James Bedford
4
Das funktioniert bei mir nicht. Ich verwende Xcode 9.4.1 (nicht die Beta) und muss Xcode ständig neu starten. Ziemlich lahm ...
Michael Rogers
1
Wenn der Spielplatz groß genug wird, funktioniert Cmd + Umschalt + Eingabetaste nicht mehr. Wer zum Teufel hat diesen Mist programmiert? Kinder, die Spielplätze auf dem iPad nutzen?
Robo Robok
70

Ich habe folgendes versucht und es hat bei mir funktioniert:

  1. Drücken Sie auf die untere Schaltfläche "Spielplatz stoppen"
  2. Entfernen Sie die erste Kommentarzeile und machen Sie die Importanweisung zur ersten Zeile. Kein Platz über dem Import.
  3. Drücken Sie die Execute-Taste
Aaeb
quelle
1
Ich fand, dass vor einem Kommentar auch kein Leerzeichen vorhanden sein sollte - aber Sie können einen Kommentar als erste Zeile haben. Nur keine leere Zeile davor oder Einrückung davor in der Zeile.
Daniel Springer
3
Ich würde dem die Notwendigkeit hinzufügen, Xcode neu zu starten. Es scheint für mich zu funktionieren.
jeb_is_a_mess
26
Hat für mich gearbeitet. Ich kann nicht glauben, wie lächerlich dieser Fehler ist. Apple sollte sich schämen.
Gangelo
1
xcode neu zu starten war das einzige, was für mich funktioniert hat
George Filippakos
1
Genial. Ich habe versucht, xcode zu beenden, abgeleitete Daten zu löschen usw., aber nichts hat funktioniert, außer dies. Obwohl ich schon in der ersten Zeile importiert hatte!
Shivam Pokhriyal
58

In meinem Fall, Xcode 8.3.2, funktioniert es, wenn ich die folgenden Schritte ausführe:

  1. Datei -> Schließen Sie "Name.playground"
  2. Datei -> Spielplatz schließen
  3. Beenden Sie Xcode
  4. Öffnen Sie Xcode erneut
Khoa Vo
quelle
2
Hat jemand, der modernen XCode verwendet, einen Einblick in die Grundursache dieses Fehlers? Dies stellt sich als die beste nicht-invasive Lösung heraus. Ich würde jedoch nichts anderes als Problemlösung als Lösung betrachten. Haben Kommentare in der Kopfzeile des Spielplatzes wirklich einen Anteil am Problem? Und was sagt Apple zur Ursache?
truedat101
Dies funktionierte für mich zusammen mit dem Entfernen der leeren Zeile vor meiner Druckanweisung.
FromTheStix
2
Ug, was für eine beschissene Art, ein IDE-Problem zu umgehen.
PruitIgoe
Einverstanden, das ist super lahm.
Ilias Karim
51

Der Hauptprozess von Buggy Simulator funktioniert auch nach dem Schließen von Xcode noch. Also hier sind die Schritte:

  1. Xcode beenden;
  2. Kill - com.apple.CoreSimulator.CoreSimulatorServiceProzess in Activity Monitor;
  3. Starten Sie Xcode und starten Sie Ihren Spielplatz.
dbv
quelle
1
Ich mag diese Antwort mehr als andere Antworten, weil sie mehr auf den Punkt bringt
Handwerk
1
Muss ich das jedes Mal tun?
Vaibhav Saran
20

Nach meiner Erfahrung sollten Sie:

  1. Verhindern Sie eine schnelle Aktualisierung des Spielplatzes, indem Sie: den Pfeil ► unten links auf dem Spielplatz gedrückt halten und "Manuell ausführen" auswählen.
  2. Beenden Sie Xcode
  3. Starten Sie Xcode neu

Es funktioniert sehr gut.

Korn
quelle
4
Aber ist es nicht der Sinn von Playground, Ihren Code so auszuführen, wie er geschrieben ist?
Saphryn
16

Ich habe den Kommentar in der ersten Zeile abgesagt. Es hat sich für mich gelöst. Stellen Sie sicher, dass Sie es versuchen, nachdem Sie Xcode geschlossen und neu gestartet haben, und erzwingen Sie das Beenden von com.apple.coresimulator aus dem Aktivitätsmonitor

Fiveagle
quelle
1
Unter XCode 8.2.1 hat dies bei mir funktioniert. Nachdem ich den Kommentar in der ersten Zeile zu Spielplätzen gelöscht hatte, lief er schnell. Ich musste den Simulator nicht zwangsweise verlassen.
Jessi
Dank @Fiveagle Antwort. Ich musste in der Tat den Coresimulator-Prozess erzwingen und die ersten Zeilen entfernen, damit "UIKit importieren" die erste Zeile ist. Der Neustart von XCode machte die Tricks, aber die erste Kompilierung dauerte eine Weile.
Yves Baumes
13

Das Hinzufügen von import PlaygroundSupport hat das Problem für mich gelöst :)

SiBC
quelle
2
Interessant. Woher hast du das?
Daniel Springer
Wenn es so effektiv ist, wie Sie sagen, würden Sie denken, dass die Entwickler dies standardmäßig enthalten würden. Ich werde damit experimentieren. Vielen Dank!
Saphryn
6

Sie können zur manuellen Verarbeitung wechseln. Es hat bei mir funktioniert. Bildschirmfoto

Sandhu
quelle
3

Stellen Sie sicher, dass Sie xcode im Aktivitätsmonitor beenden, bevor Sie den Prozess com.apple.CoreSimulator.CoreSimulatorService im Aktivitätsmonitor beenden . Ich habe mehrmals versucht, den Prozess zu beenden, und festgestellt, dass der Prozess com.apple.CoreSimulator.CoreSimulatorService auch dann erneut angezeigt wird, wenn xcode noch in der Hintergrundaktivität ausgeführt wird, selbst wenn Sie ihn gerade beendet haben.

Asad Abbas
quelle
2

Ich hatte das gleiche Problem. Ich habe nur den Assistance-Editor geöffnet und alles funktioniert einwandfrei, auch wenn ich den Assistance-Editor geschlossen habe! Fragen Sie nicht, warum es Versuch und Irrtum war. Hoffe das wird dir helfen

Farisk
quelle
Das ist eigentlich eine tolle Idee. Da die Wiedergabe- / Stopp-Taste den Prozess nicht bewegt oder eine Aktualisierung erzwingt, können Sie sich vorstellen, den Assistenten-Editor als Ersatz für die Wiedergabetaste ein- und auszuschalten. Lol. Genial :)).
Saphryn
0

Nachdem Sie eine Weile ausgeführt haben, wird eine Fehlermeldung angezeigt. Gehen Sie dann zu Ansicht> Debug-Bereich> Konsole aktivieren und spielen Sie erneut

CrtlBreak
quelle
1
Was ist eine Weile? 5 Minuten? Ein Tag?
Daniel Springer
von 5 bis 15 min vielleicht, nach einigen Wochen dieses Problems wechselte ich zu SSD und aktualisierte auf 16 GB RAM-Speicher und es ist gelöst, wie Tag und Nacht ändern
CrtlBreak
0

Überprüfen Sie den iCloud-Speicherplan!

Wenn Sie einen haben, wird ständig der gesamte Computer synchronisiert, einschließlich Desktop- und Dokumentordner. Versuchen Sie stattdessen, einen Ordner "Lokale Dateien" in Ihrem Home-Ordner zu erstellen (Befehl + Umschalt + h) und behalten Sie Ihre Playground-Projekte dort, wo sie nicht mit iCloud synchronisiert werden.

Das hat bei mir funktioniert. Ich hoffe, das funktioniert auch bei Ihnen! :) :)

Sree Ramana
quelle
Das hat bei mir tatsächlich funktioniert. Jeder andere, der dieses Problem hat, sollte es wirklich versuchen.
Peter Schorn
0

Ich verwende Xcode 10.2 und bekomme das gleiche Problem. Verwenden Sie also im Allgemeinen nur den Online Swift Playground

Das dient meinen Zwecken! :-)

DialDT
quelle
0

In meinem Fall war das Problem vom Benutzer verursacht. Ich hatte den Assistenten-Editor angezeigt, aber die Live-Ansicht wurde nicht ausgewählt. Stellen Sie sicher, dass es so aussieht:

Liveübertragung

Und nicht so:

Geben Sie hier die Bildbeschreibung ein

Mozahler
quelle
0

Kommt es auch vor, wie in meinem Fall, wenn Sie eine Funktion definiert haben, aber vergessen haben, sie aufzurufen?

msimons
quelle
0

Als ob diese Frage nicht genug Antworten hätte, werde ich meine "Lösung" für das Problem der festgefahrenen Swift-Spielplätze liefern:

Die einzige Lösung, auf die ich gestoßen bin und die für mich gut funktioniert (damit ich Xcode nicht neu starten muss):

killall launchd_sim

Dies führt dazu, dass der sich drehende "Running Playground ..." verschwindet und Sie eine neue Ausführung auslösen können. Beachten Sie: Die nächste Ausführung wird gestartet launchd_simund alle diese untergeordneten Prozesse werden erneut ausgeführt. Es wäre wahrscheinlich am besten, nur den relevanten untergeordneten Prozess zu töten. Aber ich habe es bisher nicht gefunden.

Dies mache ich jedoch nur, wenn ich die iOS-Simulatoren nicht parallel verwende, da der launchd_simProzess ein untergeordneter Prozess von ist Simulator.

pd95
quelle
0

Ich habe abgeleitete Daten gelöscht und den Build-Ordner bereinigt. Das funktioniert bei mir. Ich war mit Xcode 11.2.1 und Xcode 10.1 auf demselben Computer konfrontiert.

pawan_kumar
quelle
-1

Ich hatte das gleiche Problem, aber nachdem ich ein bisschen gegoogelt und experimentiert hatte, fand ich heraus, dass man es immer import UIKittun muss, bevor man andere Bibliotheken importiert.

Graisorn Soisakhoo
quelle
-1

Löschen Sie zunächst die eingebaute Kommentarzeile.

Selbst wenn Sie einen Kommentar in der ersten Zeile wieder einfügen, funktioniert dies dennoch. Geben Sie hier die Bildbeschreibung ein

Harry McGovern
quelle
-1

Ein letzter Tipp, der für mich funktioniert: Stellen Sie sicher, dass kein iOS-Simulator ausgeführt wird. Sie widersprechen sich.

Ahbou
quelle