O Xcode playground fica preso no 'Running playground' ou 'Launching simulator' e não executa o código, o que fazer?

144

Toda vez que eu crio um novo playground para testar algum código, o Xcode fica preso e não executa o código. Ele simplesmente apresenta a declaração 'Running playground' ou 'Launching simulator' na parte superior da tela com o ícone de carregamento girando prometidamente ao lado dele, mas nada acontece. Às vezes, isso continua indefinidamente e às vezes o Xcode interrompe e imprime isso no 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

Estou executando o Xcode 8.0 (8A218a) no macOS Sierra 10.12.

Hardware :
MacBook Pro (13 "em meados de 2012)
2,5 GHz Intel Core i5
4 GB 1600 MHz RAM DDR3

Eu olhei em volta, mas pelo menos nenhum desses tópicos forneceu uma resposta:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9

Coisas que eu já tentei com zero sucesso:

  • Reiniciando o Xcode
  • Reinstalando o Xcode (rebaixado para 7.3, mas como isso não ajudou, eu atualizei novamente para 8.0)
  • Reiniciando a máquina
  • Criando um novo playground

Você tem alguma idéia de como resolver esse problema? Eu sou novo em programação e estou ansioso para aprender Swift, mas o Xcode está tornando-o praticamente impossível ...

Agradeço antecipadamente, felicidades.

Emil Osvald
fonte
Obrigado pela sua resposta rápida. Estou usando o playground simplesmente porque na verdade tenho uma assinatura ativa no Treehouse.com e eles incentivam o uso do playground ao testar novos conceitos.
Emil Osvald
1
Eu entendo, mas meu pensamento é: você está "tentando ansiosamente aprender Swift" e agora está preso. Se você pode criar um novo projeto de aplicativo e executá-lo, pode prosseguir. Agora, se você também não pode executar um projeto de aplicativo, terá problemas mais profundos. :)
mate
Isso é definitivamente verdade. Obrigado por sua entrada, mate, farei o que você sugeriu, desde que não exista uma solução melhor. No entanto, continuarei mantendo esse segmento ativo, caso alguém tenha descoberto uma solução.
Emil Osvald
2
Não tenho conselhos para dar aqui, @EmilOsvald. Também posso relatar que isso acontece com frequência no meu MacBook (e aconteceu o tempo todo quando também usei iMacs, todas as máquinas novas com as atualizações mais recentes). Você não deve se sentir culpado por querer usar o Playgrounds. Em teoria, eles são um ótimo produto e, quando trabalham, são.
Ilias Karim
1
Não deve haver espaços antes do primeiro comentário (se a primeira linha do texto for um comentário), nem uma linha vazia como a primeira linha. Avise-se me.
Daniel Springer

Respostas:

191

Resp. Mudar para a plataforma macOS

Quando você cria um Playground, por padrão, ele seleciona a plataforma iOS e importa automaticamente o UIKit. É o UIKit que trava e fica preso o tempo todo . Se o seu código (de prática) não usar o UIKit, você poderá mudar para a plataforma MacOS . A principal diferença (embora não exata) entre iOS e macOS está no APPKit e no UIKit.

No canto superior direito do seu Xcode Playground, clique em mostrar / ocultar Utilitários -> inspetor de arquivos -> Configuração do Playground -> Plataforma -> macOS

Veja screenShot abaixo: insira a descrição da imagem aqui

PANKAJ VERMA
fonte
4
Isso pareceu funcionar para mim, juntamente com a configuração do botão de execução do playground para manual. Será que eles conseguirão consertar isso, porém, isso parece um pouco inútil?
hoboBob
2
Obrigado, funciona bem ao usar o Foundation, exatamente o que eu precisava. Eu não posso acreditar Playgrounds têm tanto erros ...
Adrien Yvon
15
Ridículo. 3 linhas de código (nenhuma das quais importa UIKit) e eu tenho que pesquisar isso no Google. Muitas pessoas simplesmente desistiam e declaravam o Swift inútil.
James Bedford
4
Isso não funciona para mim. Estou usando o Xcode 9.4.1 (não o beta) e preciso reiniciar o Xcode continuamente. Muito coxo ...
Michael Rogers
1
Além disso, se o playground ficar grande o suficiente, Cmd + Shift + Enter para de funcionar. Quem diabos programou essa porcaria? Crianças usando Playgrounds no iPad?
Robo Robok
70

Eu tentei o seguinte e funcionou para mim:

  1. pressione o botão inferior "parar playground"
  2. remova a primeira linha de comentário e faça da declaração de importação a primeira linha. nenhum espaço acima da importação.
  3. pressione o botão executar
Aaeb
fonte
1
Descobri que nenhum espaço deveria estar presente antes de um comentário - mas você pode ter um comentário como a primeira linha. Apenas nenhuma linha vazia antes dele, nem recuo antes dele, em sua linha.
Daniel Springer
3
Eu acrescentaria a isso a necessidade de reiniciar o Xcode. Parece funcionar para mim.
jeb_is_a_mess
26
Trabalhou para mim. Não acredito como esse bug é ridículo. A Apple deveria ter vergonha.
gangelo 15/09/17
1
reiniciando xcode era a única coisa que funcionou para mim
George Filippakos
1
Impressionante. Tentei sair do xcode, limpar dados derivados etc., mas nada funcionou, exceto isso. Embora eu já tenha importado na primeira linha!
Shivam Pokhriyal
58

No meu caso, o Xcode 8.3.2, funciona quando tento as etapas abaixo:

  1. Arquivo -> Fechar "Name.playground"
  2. Arquivo -> Fechar Playground
  3. Sair do Xcode
  4. Abra novamente o Xcode
Khoa Vo
fonte
2
Oferecendo algo além de mim também, alguém usando o XCode moderno tem uma idéia da causa raiz dessa falha? Esse é o melhor trabalho não invasivo, no entanto, eu não consideraria nada além da resolução de problemas uma solução. Os comentários no cabeçalho do playground realmente têm alguma parte no problema? E o que a Apple diz em relação à causa?
truedat101
Isso funcionou para mim, além de remover a linha vazia antes da minha declaração de impressão.
FromTheStix
2
Ug, que maneira ruim de solucionar um problema de IDE.
PruitIgoe
Concordo, isso é super manco.
Ilias Karim
51

O processo principal do Buggy Simulator ainda está funcionando mesmo após o fechamento do Xcode. Então, aqui estão as etapas:

  1. Saia do Xcode;
  2. com.apple.CoreSimulator.CoreSimulatorServiceProcesso de extermínio no Activity Monitor;
  3. Inicie o Xcode e execute o seu Playground.
dbv
fonte
1
Eu gosto desta resposta mais do que outras respostas, porque ele fica mais ao cerne da questão
ofício
1
Preciso fazer isso toda vez?
Vaibhav Saran
20

Na minha experiência, você deve:

  1. Impeça a atualização rápida do playground, pressionando: a seta ► na parte inferior esquerda do Playground e selecionando "Executar manualmente"
  2. Sair do Xcode
  3. Reinicie o Xcode

Funciona muito bem.

grão
fonte
4
Mas o objetivo do Playground não é executar seu código como está escrito?
saphryn
16

Eu cancelei o comentário na primeira linha. Isso resolveu para mim. Tente testá-lo depois de fechar e reiniciar o Xcode e forçar o encerramento do com.apple.coresimulator no Activity Monitor

Fiveagle
fonte
1
No XCode 8.2.1, isso funcionou para mim. Depois de excluir o comentário da primeira linha sobre os playgrounds, ele foi executado rapidamente. Não precisei forçar o encerramento do simulador.
jessi
Graças à resposta @Fiveagle. Eu realmente precisei forçar o processo de co-simulador, remover as primeiras linhas para "importar o UIKit" é a primeira linha. E reiniciar o XCode fez os truques, mas a primeira compilação demorou um pouco para ser executada.
usar o seguinte código
13

Adicionar importação PlaygroundSupport resolveu o problema para mim :)

SiBC
fonte
2
Interessante. Onde você conseguiu isso?
Daniel Springer
Se for tão eficaz quanto você diz, você pensaria que os desenvolvedores incluiriam isso por padrão. Vou experimentar isso. Obrigado!
saphryn
6

Você pode mudar para o processamento manual. Funcionou para mim. captura de tela

Sandhu
fonte
3

Certifique-se de matar o xcode no monitor de atividades antes de acabar com o processo com.apple.CoreSimulator.CoreSimulatorService no monitor de atividades. Tentei interromper o processo várias vezes e percebi que, se o xcode ainda estiver sendo executado na atividade em segundo plano, o processo com.apple.CoreSimulator.CoreSimulatorService apareceria novamente mesmo quando você o matasse.

Asad Abbas
fonte
2

Eu tive o mesmo problema, tudo o que fiz foi abrir o editor de assistência e tudo funciona bem mesmo quando eu fechei o editor de assistência! Não pergunte por que foi tentativa e erro. Espero que isso ajude você

Farisk
fonte
Essa é realmente uma ótima ideia. Como o botão play / stop não agita o processo ou força uma atualização, acho que você pode ativar e desativar o Assistente do Editor como um substituto do botão play lol. Impressionante :)).
saphryn
0

depois de executar um tempo, você verá uma mensagem de erro, em seguida, vá para ver> área de depuração> ativar console e, em seguida, jogar novamente funcionou para mim

CrtlBreak
fonte
1
O que é um tempo? 5 minutos? Um dia?
Daniel Springer
de 5 a 15 min, talvez, depois de algumas semanas de este problema eu mudei para SSD e atualizado para 16GB Memória RAM e seu resolvidos, como o dia ea noite mudança
CrtlBreak
0

Verifique o plano de armazenamento do iCloud!

Se você tiver um, ele sincroniza constantemente todo o computador, que inclui as pastas Área de trabalho e Documento. Em vez disso, tente criar uma pasta "Arquivos locais" na sua pasta Home (comando + shift + h) e mantenha seus projetos do Playground lá, onde não são sincronizados com o iCloud.

Isso funcionou para mim. Espero que funcione para você também! :)

Sree Ramana
fonte
Isso realmente funcionou para mim. Qualquer pessoa que tenha esse problema realmente deve tentar.
Peter Schorn
0

Estou usando o Xcode 10.2 e estou tendo o mesmo problema. Geralmente, basta usar o Online Swift Playground

Isso serve aos meus propósitos! :-)

DialDT
fonte
0

No meu caso, o problema foi induzido pelo usuário. Eu tinha o editor assistente exibido, mas a exibição ao vivo não foi selecionada. Certifique-se de que fica assim:

Visualização ao vivo

E não é assim:

insira a descrição da imagem aqui

Mozahler
fonte
0

Também acontece, como no meu caso, quando você define uma função, mas esqueceu de chamá-la?

msimons
fonte
0

Como se esta pergunta não tivesse respostas suficientes, fornecerei minha "solução" para o problema do Swift playgrounds:

A única solução que encontrei que funciona muito bem para mim (portanto, não preciso reiniciar o Xcode):

killall launchd_sim

Isso fará com que o "Running Playground ..." seja desativado e você poderá acionar uma nova execução. Esteja ciente: a próxima execução irá girar launchd_sime todos esses processos filhos novamente. Provavelmente seria melhor matar apenas o processo filho relevante. Mas não encontrei até agora.

Mas eu faço isso apenas quando não estou usando os simuladores do iOS em paralelo, pois o launchd_simprocesso é filho de Simulator.

pd95
fonte
0

Excluí os dados derivados e limpei a pasta de compilação. Isso funciona para mim. Eu estava enfrentando o Xcode 11.2.1 e o Xcode 10.1 na mesma máquina.

pawan_kumar
fonte
-1

Eu estava enfrentando o mesmo problema, mas depois de pesquisar e experimentar um pouco, descobri que é preciso sempre import UIKitantes de importar outras bibliotecas.

Graisorn Soisakhoo
fonte
-1

Em primeiro lugar, exclua a linha de comentário embutida.

Então, mesmo se você inserir um comentário de primeira linha, ele ainda funcionará. insira a descrição da imagem aqui

Harry McGovern
fonte
-1

Uma última dica que funciona para mim: verifique se nenhum simulador de iOS está em execução. Eles entram em conflito um com o outro.

ahbou
fonte