Le terrain de jeu Xcode reste bloqué sur 'Running Playground' ou 'Launching simulator' et ne lance pas le code, que faire?

144

Chaque fois que je crée un nouveau terrain de jeu pour tester du code, Xcode reste bloqué et ne lance pas le code. Il présente simplement la déclaration `` Courant de jeu '' ou `` Simulateur de lancement '' en haut de l'écran avec l'icône de chargement qui tourne de manière prometteuse à côté, mais rien ne se passe. Parfois, cela continue indéfiniment et parfois Xcode s'arrête et affiche ceci sur la console:

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

J'utilise Xcode 8.0 (8A218a) sur macOS Sierra 10.12.

Matériel :
MacBook Pro (13 "mi-2012)
2,5 GHz Intel Core i5
4 Go 1600 MHz Ram DDR3

J'ai regardé autour de moi mais au moins aucun de ces fils n'a fourni de réponse:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9

Choses que j'ai déjà essayées sans succès:

  • Redémarrer Xcode
  • Réinstaller Xcode (rétrogradé à la version 7.3 mais puisque cela n'a pas aidé, je suis revenu à la version 8.0)
  • Redémarrage de la machine
  • Créer un nouveau terrain de jeu

Avez-vous des idées sur la façon de résoudre ce problème? Je suis nouveau dans la programmation et j'essaie avec impatience d'apprendre Swift mais Xcode le rend pratiquement impossible ...

Merci d'avance, bravo.

Emil Osvald
la source
Merci pour votre réponse rapide. J'utilise Playground simplement parce que j'ai en fait un abonnement actif à Treehouse.com et qu'ils encouragent l'utilisation de Playground lors du test de nouveaux concepts.
Emil Osvald
1
Je comprends, mais je pense que vous "essayez avec impatience d'apprendre Swift" et en ce moment vous êtes coincé. Si vous pouvez créer un nouveau projet d'application et l'exécuter, vous pouvez continuer. Maintenant, si vous ne pouvez pas non plus exécuter un projet d'application, vous avez des problèmes plus profonds. :)
mat
C'est certainement vrai. Merci pour votre contribution matt, je ferai comme vous l'avez suggéré tant qu'il n'y a pas de meilleure solution. Je garderai néanmoins ce fil actif au cas où quelqu'un trouverait une solution.
Emil Osvald
2
Je n'ai aucun conseil à donner ici, @EmilOsvald. Je peux également signaler que cela se produit fréquemment sur mon MacBook (et cela se produit tout le temps lorsque j'utilise des iMac, toutes les nouvelles machines avec les dernières mises à jour). Vous ne devriez pas vous sentir coupable de vouloir utiliser Playgrounds. En théorie, ils sont un excellent produit et quand ils fonctionnent, ils le sont.
Ilias Karim
1
Il ne doit y avoir aucun espace avant le premier commentaire (si la première ligne de texte est un commentaire), ni une ligne vide comme première ligne. Faites le moi savoir.
Daniel Springer

Réponses:

191

Ans. Passer à la plate-forme macOS

Lorsque vous créez un Playground, il sélectionne par défaut la plate-forme iOS et importe automatiquement UIKit. C'est l'UIKit qui plante et se bloque tout le temps . Si votre code (pratique) n'utilise pas UIKit, vous pouvez passer à la plate-forme MacOS . La différence majeure (pas exacte cependant) entre iOS et macOS réside dans APPKit et UIKit.

Dans le coin supérieur droit de votre Xcode Playground, cliquez sur show / hide Utilities -> File inspector -> Playground Setting -> Platform -> macOS

Voir screenShot ci-dessous: entrez la description de l'image ici

PANKAJ VERMA
la source
4
Cela a semblé fonctionner pour moi avec le réglage du bouton d'exécution du terrain de jeu sur manuel. Vont-ils jamais résoudre ce problème, cela semble juste un peu trash
hoboBob
2
Merci, cela fonctionne bien lorsque vous utilisez Foundation, exactement ce dont j'avais besoin. Je ne peux pas croire que les terrains de jeux aient autant de bugs ...
Adrien Yvon
15
Ridicule. 3 lignes de code (dont aucune importe UIKit) et je dois google ceci. Beaucoup de gens abandonneraient et déclareraient Swift inutile.
James Bedford
4
Cela ne fonctionne pas pour moi. J'utilise Xcode 9.4.1 (pas la version bêta) et je dois continuellement redémarrer Xcode. Pretty boiteux ...
Michael Rogers
1
De plus, si le terrain de jeu devient assez grand, Cmd + Shift + Enter cesse de fonctionner. Qui diable a programmé cette merde? Les enfants utilisent Playgrounds sur iPad?
Robo Robok
70

J'ai essayé ce qui suit et cela a fonctionné pour moi:

  1. appuyez sur le bouton du bas "arrêter le terrain de jeu"
  2. supprimez la première ligne de commentaire et faites de l'instruction import la première ligne. pas d'espace au-dessus de l'importation.
  3. appuyez sur le bouton d'exécution
Aaeb
la source
1
J'ai trouvé qu'aucun espace ne devrait être présent avant un commentaire non plus - mais vous pouvez avoir un commentaire en première ligne. Juste pas de ligne vide devant lui, ni d'indentation devant lui, sur sa ligne.
Daniel Springer
3
J'ajouterais à cela la nécessité de redémarrer Xcode. Il semble fonctionner pour moi.
jeb_is_a_mess
26
A travaillé pour moi. Je ne peux pas croire à quel point ce bug est ridicule. Apple devrait avoir honte.
gangelo
1
le redémarrage de xcode était la seule chose qui fonctionnait pour moi
George Filippakos
1
Impressionnant. J'ai essayé de quitter xcode, d'effacer les données dérivées, etc. Même si j'avais déjà importé en première ligne!
Shivam Pokhriyal
58

Dans mon cas, Xcode 8.3.2, cela fonctionne lorsque j'essaie comme suit:

  1. Fichier -> Fermer "Name.playground"
  2. Fichier -> Fermer le terrain de jeu
  3. Quitter Xcode
  4. Rouvrir Xcode
Khoa Vo
la source
2
En proposant quelque chose en plus de moi aussi, est-ce que quiconque utilise le XCode moderne a un aperçu de la cause profonde de cet échec? Cela s'avère être le meilleur travail non invasif, cependant, je ne considérerais rien de moins que la résolution de problèmes comme une solution. Les commentaires dans l'en-tête du terrain de jeu ont-ils vraiment une part dans le problème? Et que dit Apple en ce qui concerne la cause?
truedat101
Cela a fonctionné pour moi avec la suppression de la ligne vide avant mon instruction d'impression.
FromTheStix
2
Ug, quelle manière merdique de contourner un problème d'IDE.
PruitIgoe
D'accord, c'est super boiteux.
Ilias Karim
51

Le processus principal de Buggy Simulator fonctionne toujours même après la fermeture de Xcode. Voici donc les étapes:

  1. Quittez Xcode;
  2. Tuer le com.apple.CoreSimulator.CoreSimulatorServiceprocessus dans le moniteur d'activité;
  3. Lancez Xcode et exécutez votre Playground.
dbv
la source
1
J'aime cette réponse plus que d'autres réponses car elle va plus au cœur du problème
craft
1
Dois-je le faire à chaque fois?
Vaibhav Saran
20

D'après mon expérience, vous devriez:

  1. Empêcher l'actualisation de l'aire de jeux Swift, en maintenant: la flèche ► en bas à gauche de l'aire de jeu et en sélectionnant «Exécuter manuellement»
  2. Quitter Xcode
  3. Redémarrez Xcode

Il fonctionne très bien.

grain
la source
4
Mais l'intérêt de Playground n'est-il pas d'exécuter votre code tel qu'il est écrit?
saphryn
16

J'ai annulé le commentaire sur la première ligne. Cela a résolu pour moi. Assurez-vous de l'essayer après avoir fermé et relancé Xcode et forcez la fermeture de com.apple.coresimulator à partir du moniteur d'activité

Fiveagle
la source
1
Sur XCode 8.2.1, cela a fonctionné pour moi. Une fois que j'ai supprimé le commentaire de première ligne sur les terrains de jeux, il s'est déroulé rapidement. Je n'ai pas eu à forcer à quitter le simulateur.
jessi
Merci à @Fiveagle answer. J'ai dû, en effet, forcer qui le processus de coresimulator, supprimer les premières lignes donc "import UIKit" est la première ligne. Et le redémarrage de XCode a fait les astuces, mais la première compilation a mis du temps à se réaliser.
yves Baumes
13

L'ajout de l'importation PlaygroundSupport a résolu le problème pour moi :)

SiBC
la source
2
Intéressant. D'où avez-vous obtenu cela?
Daniel Springer le
Si c'est aussi efficace que vous le dites, vous penseriez que les développeurs l'auraient inclus par défaut. Je vais expérimenter ça. Merci!
saphryn
6

Vous pouvez passer au traitement manuel. Cela a fonctionné pour moi. capture d'écran

Sandhu
la source
3

Assurez-vous de tuer xcode dans le moniteur d'activité avant de tuer le processus com.apple.CoreSimulator.CoreSimulatorService dans le moniteur d'activité. J'ai essayé de tuer le processus plusieurs fois et je me suis rendu compte que si xcode était toujours en cours d'exécution dans l'activité d'arrière-plan, le processus com.apple.CoreSimulator.CoreSimulatorService réapparaîtrait même lorsque vous venez de le tuer.

Asad Abbas
la source
2

J'ai eu le même problème, tout ce que j'ai fait est d'ouvrir l'éditeur d'assistance et tout fonctionne bien avec moi même lorsque j'ai fermé l'éditeur d'assistance! Ne demandez pas pourquoi il s'agissait d'essais et d'erreurs. J'espère que ceci vous aidera

Farisk
la source
C'est en fait une excellente idée. Étant donné que le bouton de lecture / d'arrêt n'agite pas le processus ou ne force pas une actualisation, je suppose que vous pouvez envisager d'activer et de désactiver l'Assistant Editor en remplacement du bouton de lecture lol. Impressionnant :)).
saphryn
0

après avoir exécuté un certain temps, vous verrez un message d'erreur, puis vous allez à afficher> zone de débogage> activer la console, puis jouer à nouveau a fonctionné pour moi

CrtlBreak
la source
1
Qu'est-ce qu'un temps? 5 minutes? Un jour?
Daniel Springer le
de 5 à 15 minutes peut-être, après quelques semaines de ce problème, je suis passé au SSD et mis à niveau vers 16 Go de mémoire RAM et c'est résolu, comme le changement de jour et de nuit
CrtlBreak
0

Vérifiez le plan de stockage iCloud!

Si vous en avez un, il synchronise constamment tout l'ordinateur, qui comprend les dossiers Bureau et Document. Essayez plutôt de créer un dossier "Fichiers locaux" dans votre dossier Accueil (commande + Maj + h) et conservez vos projets Playground là où ils ne se synchronisent pas avec iCloud.

Cela a fonctionné pour moi, j'espère que cela fonctionnera pour vous aussi! :)

Sree Ramana
la source
Cela a fonctionné pour moi. Quiconque a ce problème devrait vraiment l'essayer.
Peter Schorn
0

J'utilise Xcode 10.2 et j'obtiens le même problème. Donc, généralement, utilisez simplement Online Swift Playground

Cela sert mes objectifs! :-)

DialDT
la source
0

Dans mon cas, le problème était induit par l'utilisateur. J'avais l'éditeur assistant affiché, mais la vue en direct n'a pas été sélectionnée. Assurez-vous que cela ressemble à ceci:

Vue en direct

Et pas comme ça:

entrez la description de l'image ici

Mozahler
la source
0

Cela arrive aussi, comme dans mon cas, lorsque vous avez défini une fonction, mais que vous avez oublié de l'appeler?

msimons
la source
0

Comme si cette question n'avait pas assez de réponses, je fournirai ma "solution" au problème des terrains de jeux Swift bloqués:

La seule solution que j'ai rencontrée et qui fonctionne bien pour moi (je n'ai donc pas à redémarrer Xcode):

killall launchd_sim

Cela fera disparaître la rotation "Running Playground ..." et vous pourrez déclencher une nouvelle exécution. Attention: la prochaine exécution va tourner launchd_simet tous ces processus enfants à nouveau. Il serait probablement préférable de ne tuer que le processus enfant concerné. Mais je ne l'ai pas trouvé jusqu'ici.

Mais je ne le fais que lorsque je n'utilise pas les simulateurs iOS en parallèle, car le launchd_simprocessus est un processus enfant de Simulator.

pd95
la source
0

J'ai supprimé les données dérivées et nettoyer le dossier de construction. Cela fonctionne pour moi. J'étais confronté à Xcode 11.2.1 et Xcode 10.1 sur la même machine.

pawan_kumar
la source
-1

J'étais confronté au même problème, mais après avoir cherché sur Google et expérimenté un peu, j'ai découvert qu'il fallait toujours import UIKitavant d'importer d'autres bibliothèques.

Graisorn Soisakhoo
la source
-1

Tout d'abord, supprimez la ligne de commentaire intégrée.

Ensuite, même si vous remettez un commentaire de première ligne, cela fonctionne toujours. entrez la description de l'image ici

Harry McGovern
la source
-1

Un dernier conseil qui fonctionne pour moi: assurez-vous qu'aucun simulateur iOS n'est en cours d'exécution. Ils sont en conflit les uns avec les autres.

ahbou
la source