Xcode 9 Autocomplete não funciona 100% - parcialmente funcionando

121

Esta manhã, o Xcode 9.0 (9A235) mostra uma nova / estranha caixa Auto Complete que não é de todo o que costumava ser. Como obtenho a caixa de preenchimento automático completo para que o preenchimento automático tenha a aparência normal?

insira a descrição da imagem aqui

Ernie
fonte
1
Excluir a pasta DERIVED DATA resolveu para mim. Graças a outro post. Graças a esta postagem: stackoverflow.com/questions/28429630/…
Ernie
Provavelmente é porque a indexação ainda não foi concluída.
ozgur
1
Tentei todas as soluções propostas e nada ajudou em um dos meus projetos 🙁
Alexander Vasenin
3
11.3 é um desastre com relação a esse problema. Muitas vezes, apenas reiniciar o Xcode ajuda: /
Fattie

Respostas:

233

Experimentar:

  1. Vá para Xcode> Preferências> Edição de Texto
  2. Em Auto-completar de código - Desmarque 'Sugerir conclusões ao digitar'
  3. Saia do Xcode e reinicie o Xcode.
  4. Vá para Xcode> Preferências> Edição de Texto novamente
  5. Saia do Xcode e reinicie o Xcode.
  6. Agora vá para Conclusão de código e marque 'Sugerir conclusões ao digitar'.
  7. Experimente digitar a função de biblioteca ou enum e divirta-se!
Lal Krishna
fonte
2
solução incrível. tão estranho. Eu me pergunto como você replicou isso.
Kunal Gupta de
1
Resposta de um milhão de dólares. Isso até corrigiu o "Ir para a definição".
OutOnAWeekend
Ainda obrigatório no Xcode 11.2, obrigado por este hack de vida estranho :-)
Rocket Garden
Este bug aa no Xcode como sempre novas atualizações cria novos problemas, a solução de trabalho para mim é: 1- Quite Xcode. 2- aguarde alguns segundos. 3- Abra o Xcode mas não toque em nada, nem mesmo clique em algum lugar do editor. 4- Espere até a indexação terminar. O preenchimento automático funciona agora.
Shahriar
1
Ainda é necessário no XCode 11.5, Catalina, julho de 2020. Muito obrigado!
Reuben Scratton
30

Coisas para tentar:

1

Execute este comando no diretório do projeto se você usar cocoapods:

rm -rf ~/Library/Caches/CocoaPods;
rm -rf Pods; rm -rf ~/Library/Developer/Xcode/DerivedData/*;
pod deintegrate; pod setup; pod install;


2

Limpar dados em cache

Limpe o projeto -> Cmd + Shift + K

Limpe a pasta de compilação -> Cmd + Shift + Option + K

Se você pulou a etapa um:
Excluir Dados Derivados
Xcode Preferences-> Locations->
Símbolo de Seta Leva você para DerrivedData-> Excluir Pasta


3

Verifique as fontes de compilação da sua fase de construção.

Todo arquivo .swifte .mno projeto deve estar nesta lista ou não será preenchido automaticamente nesses arquivos.


4

Otimize seu editor:

Use fileprivate em todas as propriedades e funções de classe que puder para reduzir o escopo do trabalho dos compiladores por item.

Escreva código modular / OOP para que você tenha menos código para o compilador ler.

Evite usar inferência de tipo quando o resultado for um cálculo complexo e tente dividir cálculos complexos em let this = smallerOperationdeclarações

Sethmr
fonte
Com o XCode 9.2 não há mais um símbolo de seta para a pasta de dados derivados. Obrigado pela dica do arquivo particular. O pesadelo continua ...
Sal
Ainda vejo o símbolo da seta. Isso estava em uma versão anterior do 9.2 ou algo assim?
Sethmr
28

Xcode versão 11.0 (11A420a)

Tentei a solução de Lal Krishna para o Xcode V11.0. Funcionou algumas vezes, mas depois não obtive resultado.

Encontrei uma solução. Você deve excluir dois arquivos:

  1. Biblioteca / Desenvolvedor / Xcode / Dados Derivados (conforme descrito antes)
  2. Biblioteca / Developer / Xcode / UserData / IDEEditorInteractivityHistory

Essa solução me ajuda agora. Pode ser útil para outras pessoas 😉

Kostiantyn Bykhkalo
fonte
3
trabalhou para mim. Só quero dizer que o Visual Studio 2002 (!) Foi melhor que o Xcode 2009-2019. Todos esses anos, o Xcode tem muitos bugs. Não entendo por que a Apple não se preocupa com os desenvolvedores. Xcode feito por desenvolvedores! (Eu tive que retirá-lo)
user1105951
Isso funciona para mim: Saia do Xcode, remova 2 pastas como você disse, reinicie o Xcode e todos os problemas desaparecem: D
phuongzzz
20

Isso pode acontecer quando o arquivo não é membro do Destino. Abra o arquivo onde o autocomplete não está funcionando e mostre a guia "Utilities" no canto superior direito do Xcode (azul na imagem abaixo). Captura de tela dos botões de visualização superior direito do Xcode

Captura de tela das opções de associação de destino do Xcode

Certifique-se de que seu destino (normalmente o nome do seu aplicativo) esteja marcado. O preenchimento automático deve funcionar quase que instantaneamente, sem reiniciar o Xcode, limpar ou excluir dados derivados.

Se já estiver marcado, certifique-se de desmarcar e verificar novamente. Para mim, funcionou.

Isaiah Turner
fonte
apenas abrir essa página e fechar funcionou. Estou confuso. Obrigado btw.
Okhan Okbay
Funcionou no xcode 10. O arquivo de fato já era membro do destino. Tive que desmarcar e verificar novamente para ser reconhecido como tal.
Jim75
isso aconteceu comigo depois do git merge. Acho que um branch escreveu sobre meu arquivo de projeto atual e o outro não se fundiu corretamente nele.
Asfand Shabbir,
11

Estou usando o Xcode 10.2 e tive o mesmo problema.

Essa resposta do axel me ajudou a consertar.

De qualquer forma, vou descrever um pouco mais:

  1. Vá para YourProject.xcodeprojclicando com o botão direito do mouse e abraShow Package Contents
  2. Vá para xcuserdatae exclua seuyouruser.xcuserdatad

Se você também tiver xcworkspace(se já tiver algum pod instalado), execute as etapas 3 e 4, caso contrário, pule as etapas 3 e 4:

  1. Vá para YourProject.xcworkspaceclicando com o botão direito do mouse e abraShow Package Contents
  2. Vá para xcuserdatae exclua seuyouruser.xcuserdatad

  3. Saia do Xcode

  4. Exclua Dados Derivados usando Terminal:

rm -rf ~ / Library / Developer / Xcode / DerivedData

  1. Abra o Xcode e verifique se funciona.

insira a descrição da imagem aqui

Gent Berani
fonte
11

Isso também pode acontecer se você nomear seus arquivos de maneira redundante. Por exemplo,

Data.swift

Data.swift

ScottyBlades
fonte
1
No meu caso, esse era o problema, tenho o mesmo nome de arquivo em 2 pastas diferentes
Raj
Isso também acontece comigo. Dois arquivos ViewController
Shark Deng
1
No meu caso, eu tinha um grupo virtual chamado ABC e um arquivo dentro desse grupo chamado ABC.swift. Renomear o arquivo corrigiu isso. Obrigado
Rem-D
7

Remover o arquivo dos Test Targets corrigiu meu problema.

Martin Jun
fonte
Funcionou para mim. Obrigado
Duan Nguyen
não consegui encontrar
Ryan110
5

Por favor, tente fazer isso:

Selecione o arquivo >> verifique se o arquivo foi adicionado aos destinos UITesting ou UnitTesting (Inspetor de arquivo -> Associação de destino) . Em caso afirmativo, desmarque esses dois e certifique-se de que apenas o destino do projeto seja selecionado. Em seguida, crie e tente se o preenchimento automático está funcionando bem.

Isso funcionou para mim. Espero que ajude alguém.

abhimuralidharan
fonte
4

Depois de muito tempo pesquisando, finalmente resolvi o problema para mim. Em Xcode> Preferências> Edição de texto, em "Completar código", marquei "Usar a tecla Escape para mostrar sugestões de conclusão" por algum motivo. Assim que desmarquei essa caixa, o preenchimento automático funcionou perfeitamente, sem nem mesmo precisar reiniciar o Xcode! (Xcode 10)

Xcoder
fonte
4

Aqui está um pouco de solução alternativa, mas funciona.

  1. Limpe o projeto ... Command + Shift + K

  2. Limpe a pasta de compilação ... Command + Shift + Opções (Alt) + K

  3. Exclua os dados derivados do projeto ... Isso pode ser feito com a ajuda deste link:

    Como posso excluir dados derivados no Xcode 9?

  4. Feche o XCode.

  5. Reabra o XCode (deixe a indexação terminar) e construa o projeto ... Command + B

Assim que terminar a construção, as sugestões estarão de volta. Eu tentei duas vezes.

Atualizar:

Às vezes, o problema pode ser tão simples quanto nomes de arquivo duplicados. Verifique cuidadosamente se algum novo nome de arquivo adicionado por você está em conflito com arquivos mais antigos.

Abhinav Dobhal
fonte
3

Adicionei aqui o que estava acontecendo no meu projeto para o caso de poder ajudar outra pessoa ... Eu tinha 2 arquivos com o mesmo nome e não sabia.

TomCobo
fonte
2

Acabei de perder um dia tentando resolver o pesadelo de autocomplete do Xcode (9.2). A exclusão de dados derivados pareceu funcionar brevemente, então as coisas se reverteram. Reinicializações etc. e outras sugestões de vodu não fizeram diferença.

Desisti e baixei a versão de avaliação de 30 dias do AppCode da Jet Brains. Autocomplete funcionou bem lá e talvez seja coincidência, mas então começou a funcionar novamente no meu projeto no Xcode. Não posso garantir que continuará funcionando ...

SimonTheDiver
fonte
"outro vodu sugerido" lol - muito bem colocado ... perdemos muito tempo procurando soluções para os bugs da apple, mas parei de reclamar do xcode quando comecei a usar o Android Studio
JohnV
2

Parece ser específico do arquivo no meu caso (Xcode 9.2). Para mim, a solução foi:

  1. Excluir arquivo com problema (remover referência)
  2. Limpar e construir
  3. Adicione o arquivo de volta ao projeto (não verifiquei os alvos de teste)
  4. Construir novamente

Finalmente, após 3 horas tentando de tudo - o preenchimento automático funciona como deveria.

Matjan
fonte
2

Problemas principalmente porque faltam localização de alguns arquivos no navegador do projeto (erros de compilação)

  1. Pressione command + 1 para abrir o Project Navigatorpainel
  2. Verifique se há algum arquivo ausente

Ou você pode:

  1. Excluir DerivedData (command + shift + K)
  2. Limpar pasta de compilação (comando + shift + opção + K)
  3. Pressione construir novamente (comando + B)
  4. Você deve ver um erro de compilação que o Xcode não conseguiu encontrar alguns arquivos que impedem a ferramenta de compilação de processar a conclusão automática.
  5. Corrija e conserte todos os arquivos ausentes que você vê.

Espero que isto ajude

Vinh Nguyen
fonte
2

Xcode 11.3, macOS catalina

processo parsecd atingir 100% da CPU, então matá-lo me ajuda

Олень Безрогий
fonte
2

Para Xcode 11.4 (11E146)

Barra invertida no nome da pasta interrompendo o recurso de preenchimento automático. Se for esse o caso, remova-o e crie novamente.

insira a descrição da imagem aqui

Husam
fonte
1

Para mim, isso estava acontecendo no meu arquivo de teste, porque não fazia parte de um alvo por algum motivo. Definir sua associação de destino resolveu o problema.

Menno
fonte
1

Para mim, o problema ocorreu quando descartei todas as alterações de um arquivo (em Source Control> Commit), o que efetivamente excluiu o arquivo. Isso é o que eu queria e pensei que o arquivo e todas as referências a ele seriam excluídos também.

No entanto, ainda havia uma referência ao arquivo (mostrado em vermelho) no navegador de Projetos. A exclusão do arquivo (agora inexistente) no navegador de projetos trouxe de volta o preenchimento automático por mágica.

Nenhuma quantidade de limpeza, exclusão de dados derivados, etc. ajudou. Só percebi que o arquivo excluído ainda estava aparecendo quando tentei construir meu projeto, o que obviamente falhou porque não conseguiu encontrar esse arquivo.

Espero que isso ajude alguém a economizar 30 minutos :)

John V
fonte
Veja minha resposta para o motivo.
James Bush
@ponury, não entendi ... OP segundo parágrafo é uma solução, não?
brasofilo
1

Use Command + B
ou Command + R para construir ou executar o projeto
Xcode às vezes bagunça;)

Mehdi
fonte
1
  1. verifique se você selecionou Suggest completions while typingno Xcode -> Preferências -> Edição de Texto
  2. navegue para usuário-> Biblioteca-> Desenvolvedor-> Xcode-> DerivedData no Finder e exclua a pasta DerivedData
qingfeng
fonte
1

Meu caso pode parecer muito específico para ajudar, mas pode dar a alguém uma ideia de como resolver o preenchimento automático quebrado. Xcode 10.2.1.

No meu caso, o preenchimento automático parou de funcionar totalmente e nenhuma dessas outras respostas me ajudou. Além disso, o ventilador no computador pode ser ouvido mais alto, indicando que algo estava sobrecarregado (nenhum outro aplicativo em execução). Deve-se notar que eu estava editando em um laptop MacBook Pro. Parecia estar relacionado com a luta do editor para analisar a equação que eu escrevi:

switch mtype {
    case .indeterminate:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
    case .right:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2) + (frame.width / 2)
    case .left:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2)
 }

Eu estava tentando animar uma visualização de texto à esquerda, à direita ou no meio, dependendo das preferências do usuário. O newPositioné um para o CGPointqual o texto será animado. De qualquer forma, divido as equações e de repente o autocompletar começou a funcionar e o ventilador ficou silencioso! Consegui recriar este problema específico mais de uma vez, redigitando o código acima e substituindo-o por:

let halfFrameWidth: CGFloat = frame.width / 2
let middleLeft = (halfFrameWidth - mainFigureText.frame.width) / 2

switch doseType {
    case .right:
      newPosition.x = middleLeft + halfFrameWidth
    case .left:
      newPosition.x = middleLeft
    default:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
 }
Todd
fonte
1

Gostaria de acrescentar mais uma à pilha de soluções, porque é a única que funcionou para mim e não está em lugar nenhum aqui.

O Xcode normalmente vem com duas configurações de construção padrão para cada projeto. Release& Debug. Eu tenho um extra para meus testes de unidade chamados Testing. No Xcode 10.1, 10.2, 10.3 e 11 beta, o novo sistema de compilação não parece gostar e só será completado automaticamente se você usar Releaseou Debug. Qualquer configuração de construção personalizada interrompe o preenchimento automático em projetos mistos (swift + objc) com testes de unidade.

LimeRed
fonte
0

Este link me ajudou. Abra as Configurações de construção e preencha os caminhos de pesquisa da estrutura. Veja a imagem abaixo.

insira a descrição da imagem aqui

Muruganandham K
fonte
0

Erros de compilação podem interromper o recurso de preenchimento automático no Xcode.

Adobels
fonte
0

Tive o problema de 100% não funcionar com preenchimento automático, nada do que foi escrito aqui ajudou. Uma coisa que notei - ele foi quebrado logo após adicionar algumas entidades ao arquivo .xcdatamodel, que tem definição de classe codegen por padrão.

Portanto, não fiquei surpreso ao usar o codegen none do estilo antigo (e gerar classes, é claro) corrigiu o problema imediatamente, mesmo sem reiniciar o xcode.

insira a descrição da imagem aqui

HotJard
fonte
0

Com o Xcode 11.1, simplesmente executar Clean Build Folderou excluir dados derivados não era suficiente para corrigir o preenchimento automático.

Só depois de reiniciar meu Mac , tudo voltou ao normal

Ely
fonte
0

Se você tiver problemas com preenchimento / preenchimento automático / intellisense estranhos (não mostrando coisas padrão como delegados e métodos de protocolos de fonte de dados), apenas mude seu destino (por exemplo, do simulador iPhone 8 para um dispositivo real), construa o projeto e volte para o seu destino original .

Semelhante a problemas com o Interface Builder (storyboards) não mostrando nada, mas apenas "nada selecionado" sempre que você seleciona qualquer parte da visualização. Basta mudar para outro Xib / Storyboard (ou até mesmo criar um novo), verificar se funciona lá e voltar.

Essas soluções alternativas funcionaram para mim em ambos os casos (tive os dois problemas em um dia com um projeto no Xcode 10.2.1). Pelo que tenho visto em todos os fóruns da Internet, parece que esses são bugs nunca corrigidos desde o Xcode 6.x ou assim.

Felicidades!

yrk
fonte
0

No meu caso (Xcode 11.1), aconteceu quando parei a indexação automática do Xcode com este comando defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

Então eu volto com ele defaults write com.apple.dt.Xcode IDEIndexDisable -bool false. em seguida, reinicie o macOS e execute novamente o Xcode.

Reza Dehnavi
fonte
0

Tive o mesmo problema com o Xcode 11.3. Nada acima não ajudou, descobri que tinha erros de compilação. Apenas conserte os erros de compilação e o preenchimento automático funcionará novamente.

Alexander Nikolenko
fonte