Xcode 9 Autocomplete ne fonctionne pas à 100% - fonctionne partiellement

121

Ce matin, Xcode 9.0 (9A235) montre une nouvelle / étrange boîte Auto Complete qui n'est plus du tout ce qu'elle était. Comment obtenir la boîte de saisie semi-automatique complète pour que la saisie semi-automatique ressemble à ce qu'elle est habituellement?

entrez la description de l'image ici

Ernie
la source
1
La suppression du dossier DERIVED DATA a résolu le problème pour moi. Merci à un autre post. Merci à cet article: stackoverflow.com/questions/28429630/…
Ernie
C'est probablement parce que l' indexation n'est pas encore terminée.
ozgur
1
J'ai essayé toutes les solutions proposées et rien n'a aidé avec l'un de mes projets 🙁
Alexander Vasenin
3
11.3 est un désastre concernant ce problème. Souvent, il suffit de redémarrer Xcode: /
Fattie

Réponses:

236

Essayer:

  1. Allez dans Xcode> Préférences> Édition de texte
  2. Sous Achèvement du code - Décochez "Suggérer des complétions lors de la saisie"
  3. Quittez Xcode, puis relancez Xcode.
  4. Aller à Xcode> Préférences> Texte Modification à nouveau
  5. Quittez Xcode, puis relancez Xcode.
  6. Maintenant, allez à l'achèvement du code et cochez 'Suggérer des complétions lors de la saisie'.
  7. Essayez de taper la fonction de bibliothèque ou enum et profitez-en!
Lal Krishna
la source
2
solution géniale. si étrange. Je me demande comment avez-vous reproduit cela.
Kunal Gupta
1
Réponse à un million de dollars. Cela a même corrigé "Aller à la définition".
OutOnAWeekend
Encore requis dans Xcode 11.2, merci pour ce truc bizarre de vie :-)
Rocket Garden
Ce bogue dans Xcode comme toujours les nouvelles mises à jour crée de nouveaux problèmes, la solution de travail pour moi est: 1- Quite Xcode. 2- attendez quelques secondes. 3- Ouvrez Xcode mais ne touchez à rien sans même cliquer quelque part dans l'éditeur. 4- Attendez que l'indexation soit terminée. La saisie semi-automatique fonctionne maintenant.
Shahriar le
1
Encore nécessaire dans XCode 11.5, Catalina, juillet 2020. Merci beaucoup!
Reuben Scratton le
30

Choses à essayer:

1

Exécutez cette commande dans le répertoire du projet si vous utilisez des cocoapodes:

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


2

Nettoyer les données mises en cache

Nettoyer le projet -> Cmd + Shift + K

Nettoyez le dossier de construction -> Cmd + Maj + Option + K

Si vous avez sauté la première étape:
Supprimer les données dérivées
Xcode Preferences-> Locations-> Le
symbole fléché vous amène à DerrivedData-> Supprimer le dossier


3

Vérifiez les sources de compilation de votre phase de construction.

Tous les fichiers .swiftet .mdu projet doivent figurer dans cette liste, sinon ils ne seront pas complétés automatiquement dans ces fichiers.


4

Optimisez votre éditeur:

Utilisez fileprivate sur chaque propriété de classe et fonction que vous pouvez pour réduire la portée du travail des compilateurs par élément.

Écrivez du code modulaire / POO pour avoir moins de code à lire par le compilateur.

Évitez d'utiliser l'inférence de type lorsque le résultat est un calcul complexe et essayez de décomposer les calculs complexes en let this = smallerOperationinstructions

Sethmr
la source
Avec XCode 9.2, il n'y a plus de symbole de flèche dans le dossier de données dérivées. Merci pour le conseil fileprivate. Le cauchemar continue ...
Sal
Je vois toujours le symbole de la flèche. Était-ce dans une version antérieure de 9.2 ou quelque chose?
Sethmr
28

Version de Xcode 11.0 (11A420a)

J'ai essayé la solution de Lal Krishna pour Xcode V11.0. Cela a fonctionné quelques fois mais plus tard je n'ai obtenu aucun résultat.

J'ai trouvé une solution. Vous devez supprimer deux fichiers:

  1. Bibliothèque / Développeur / Xcode / Données dérivées (comme décrit précédemment)
  2. Bibliothèque / Developer / Xcode / UserData / IDEEditorInteractivityHistory

Cette solution m'aide maintenant. Peut être utile pour les autres 😉

Kostiantyn Bykhkalo
la source
3
travaillé pour moi. Je veux juste dire que Visual Studio 2002 (!) Était meilleur que Xcode 2009-2019. Toutes ces années, Xcode est tellement bogué. Je ne comprends pas pourquoi Apple ne se soucie pas des développeurs. Xcode fait par les développeurs! (Je devais le sortir)
user1105951
Cela fonctionne pour moi: quittez Xcode, supprimez 2 dossiers comme vous l'avez dit, relancez Xcode et tous les problèmes sont partis: D
phuongzzz
20

Cela peut se produire lorsque le fichier n'est pas membre de la cible. Ouvrez le fichier où la saisie semi-automatique ne fonctionne pas et affichez l'onglet "Utilitaires" en haut à droite de Xcode (bleu dans la capture d'écran ci-dessous). Capture d'écran des boutons de vue en haut à droite de Xcode

Capture d'écran des options d'adhésion à Xcode Target

Assurez-vous que votre cible (généralement le nom de votre application) est cochée. La saisie semi-automatique devrait fonctionner presque instantanément sans redémarrer Xcode, nettoyer ou supprimer les données dérivées.

S'il est déjà coché, assurez-vous de le décocher et de le revérifier. Pour moi, ça a fait l'affaire.

Isaiah Turner
la source
seulement ouvrir cette page et fermer a fonctionné. Je suis confus. Merci btw.
Okhan Okbay
Cela fonctionnait sur xcode 10. Le fichier était en effet déjà membre de la cible. J'ai dû décocher puis vérifier à nouveau pour être reconnu comme tel.
Jim75
cela m'est arrivé après git merge, je suppose qu'une branche a écrit sur mon fichier de projet actuel et l'autre n'a pas fusionné correctement dans celui-ci.
Asfand Shabbir
11

J'utilise Xcode 10.2 et j'ai eu le même problème.

Cette réponse d' Axel m'a aidé à corriger.

Quoi qu'il en soit, je vais décrire un peu plus:

  1. Accédez à YourProject.xcodeprojen cliquant avec le clic droit de la souris et ouvrezShow Package Contents
  2. Accédez à xcuserdataet supprimez votreyouruser.xcuserdatad

Si vous avez également le xcworkspace(si vous avez déjà installé des pods ), effectuez les étapes 3 et 4, sinon sautez simplement les étapes 3 et 4:

  1. Accédez à YourProject.xcworkspaceen cliquant avec le clic droit de la souris et ouvrezShow Package Contents
  2. Accédez à xcuserdataet supprimez votreyouruser.xcuserdatad

  3. Quitter Xcode

  4. Supprimer les données dérivées à l'aide du terminal:

rm -rf ~ / Bibliothèque / Développeur / Xcode / DerivedData

  1. Ouvrez Xcode et vérifiez s'il fonctionne.

entrez la description de l'image ici

Gent Berani
la source
11

Cela peut également se produire si vous avez nommé vos fichiers de manière redondante. Par exemple,

Data.swift

Data.swift

ScottyBlades
la source
1
Dans mon cas, c'était le problème, j'ai le même nom de fichier dans 2 dossiers différents
Raj
Cela m'arrive aussi. Deux fichiers ViewController
Shark Deng
1
Dans mon cas, j'avais un groupe virtuel nommé ABC et un fichier au sein de ce groupe nommé ABC.swift. Renommer le fichier a résolu ce problème. Merci
Rem-D
7

La suppression du fichier des cibles de test a résolu mon problème.

Martin Jun
la source
A travaillé pour moi. Merci
Duan Nguyen
n'a pas pu le trouver
Ryan110
5

Veuillez essayer de faire ceci:

Sélectionnez le fichier >> vérifiez si le fichier est ajouté aux cibles UITesting ou UnitTesting (inspecteur de fichiers -> adhésion cible) . Si tel est le cas, décochez ces deux cases et assurez-vous que seule la cible du projet est sélectionnée. Puis compilez et essayez si la saisie semi-automatique fonctionne correctement.

Cela a fonctionné pour moi. J'espère que cela aidera quelqu'un.

abhimuralidharan
la source
5

Voici un peu de solution de contournement mais fonctionne.

  1. Nettoyer le projet ... Commande + Maj + K

  2. Nettoyez le dossier de construction ... Commande + Maj + Options (Alt) + K

  3. Supprimer les données dérivées du projet ... Cela peut être fait à l'aide de ce lien:

    Comment puis-je supprimer des données dérivées dans Xcode 9?

  4. Fermez XCode.

  5. Rouvrez XCode (laissez l'indexation se terminer) et construisez le projet ... Commande + B

Une fois que cela sera fait avec la construction, les suggestions seront de retour. J'ai essayé deux fois.

Mettre à jour:

Parfois, le problème peut être aussi simple que des noms de fichiers en double. Vérifiez soigneusement si les nouveaux noms de fichiers ajoutés par vous sont en conflit avec des fichiers plus anciens.

Dans Xcode 11.4, même si vous déplacez un fichier existant vers un autre groupe, les suggestions disparaissent. Cela peut être résolu simplement en redémarrant Xcode.

Abhinav Dobhal
la source
4

Après une longue période de recherche, j'ai finalement résolu le problème pour moi. Dans Xcode> Préférences> Édition de texte, dans «Achèvement du code», j'avais coché «Utiliser la touche Échap pour afficher les suggestions de complétion» pour une raison quelconque. Dès que j'ai décoché cette case, la complétion automatique a fonctionné comme un charme, sans même avoir besoin de redémarrer Xcode! (Xcode 10)

Xcoder
la source
3

J'ai ajouté ici ce qui se passait dans mon projet juste au cas où cela pourrait aider quelqu'un d'autre ... J'avais 2 fichiers avec le même nom et je ne m'en rendais pas compte.

TomCobo
la source
2

Je viens de perdre une journée à essayer de résoudre le cauchemar de la saisie semi-automatique de Xcode (9.2). La suppression des données dérivées a semblé fonctionner brièvement, puis les choses sont revenues. Les redémarrages, etc. et d'autres suggestions de vaudou n'ont pas réussi à faire la différence.

J'ai abandonné et j'ai téléchargé l'essai de 30 jours d'AppCode de Jet Brains. La saisie semi-automatique a bien fonctionné là-bas et c'est peut-être une coïncidence, mais elle a ensuite recommencé à fonctionner dans mon projet dans Xcode. Je ne peux pas garantir qu'il continuera à fonctionner ...

SimonTheDiver
la source
"autre vaudou suggéré" lol - si bien mis ... nous perdons tellement de temps à trouver des solutions aux bogues d'Apple, mais j'ai arrêté de me plaindre de xcode quand j'ai commencé à utiliser le studio Android
JohnV
2

Cela semble être spécifique au fichier dans mon cas (Xcode 9.2) Pour moi, le correctif était:

  1. Supprimer le fichier problématique (supprimer la référence)
  2. Nettoyer et construire
  3. Ajouter le fichier dans le projet (je n'ai pas vérifié les cibles de test)
  4. Construire à nouveau

Enfin, après 3 heures à tout essayer - la saisie semi-automatique fonctionne comme il se doit.

Matjan
la source
2

Problèmes principalement parce qu'il manque l'emplacement de certains fichiers dans le navigateur de projet (erreurs de construction)

  1. Appuyez sur commande + 1 pour ouvrir le Project Navigatorvolet
  2. Vérifiez s'il y a des fichiers manquants

Ou tu peux:

  1. Supprimer DerivedData (commande + Maj + K)
  2. Nettoyer le dossier de construction (commande + Maj + option + K)
  3. Appuyez à nouveau sur construire (commande + B)
  4. Vous devriez voir une erreur de construction indiquant que Xcode n'a pas pu trouver certains fichiers qui empêchent l'outil de construction de traiter la complétion automatique.
  5. Corrigez et corrigez tous les fichiers manquants que vous voyez.

J'espère que cela t'aides

Vinh Nguyen
la source
2

Xcode 11.3, macOS Catalina

processus parsecd atteint 100% du processeur, donc tuer ça m'aide

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

Pour Xcode 11.4 (11E146)

Barre oblique inverse dans le nom du dossier interrompant la fonction de saisie semi-automatique, si tel est le cas, supprimez-la et reconstruisez-la.

entrez la description de l'image ici

Husam
la source
1

Pour moi, cela se produisait dans mon fichier de test, car il ne faisait pas partie d'une cible pour une raison quelconque. La définition de son adhésion cible a résolu le problème.

Menno
la source
1

Pour moi, le problème est survenu lorsque j'ai annulé toutes les modifications d'un fichier (sous Contrôle de la source> Valider), ce qui a effectivement supprimé le fichier. C'est ce que je voulais et j'ai pensé que le fichier et toutes les références à celui-ci seraient également supprimés.

Cependant, il y avait toujours une référence au fichier (affiché en rouge) dans le navigateur Projet. La suppression du fichier (maintenant inexistant) dans le navigateur de projet a ramené la complétion automatique par magie.

Aucun nettoyage, suppression des données dérivées, etc. n'a aidé. Je me suis seulement rendu compte que le fichier supprimé était toujours affiché lorsque j'ai essayé de créer mon projet, ce qui a bien sûr échoué car il ne pouvait pas trouver ce fichier.

J'espère que cela aidera quelqu'un à gagner 30 minutes :)

JohnV
la source
Voir ma réponse pour la raison pourquoi.
James Bush
@ponury, je ne comprends pas ... Le deuxième paragraphe de l'OP est une solution, non?
brasofilo
1

Utilisez Command + B
ou Command + R pour créer ou exécuter le projet
Xcode gâche parfois;)

Mehdi
la source
1
  1. vérifiez si vous avez sélectionné Suggest completions while typingdans Xcode -> Préférences -> Edition de texte
  2. accédez à utilisateur-> Bibliothèque-> Développeur-> Xcode-> DerivedData dans le Finder et supprimez le dossier DerivedData
qingfeng
la source
1

Mon cas peut sembler trop spécifique pour aider, mais cela pourrait donner à quelqu'un une idée de la façon de résoudre l'auto-complétion interrompue. Xcode 10.2.1.

Dans mon cas, l'auto-complétion a complètement cessé de fonctionner et aucune de ces autres réponses ne m'a aidé. De plus, le ventilateur de l'ordinateur pouvait être entendu plus fort indiquant que quelque chose était surmené (aucune autre application ne fonctionnait), il convient de noter que je montais sur un ordinateur portable MacBook Pro. Cela semblait lié au fait que l'éditeur avait du mal à analyser l'équation que j'avais écrite:

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)
 }

Je cherchais à animer une vue de texte à gauche, à droite ou au milieu selon les préférences de l'utilisateur. Le newPositionest un vers CGPointlequel le texte s'animera. Quoi qu'il en soit, j'ai divisé les équations et tout d'un coup l'auto-complétion a commencé à fonctionner et le ventilateur s'est éteint! J'ai pu recréer ce problème spécifique plus d'une fois en retapant le code ci-dessus, puis en le remplaçant par:

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
la source
1

Je voudrais en ajouter une de plus à la pile de solutions, car c'est la seule qui a fonctionné pour moi et qui ne se trouve nulle part ici.

Xcode est normalement livré avec deux configurations de construction par défaut pour chaque projet. Release& Debug. J'en ai un supplémentaire pour mes tests unitaires appelé Testing. Dans Xcode 10.1, 10.2, 10.3 et 11 beta, le nouveau système de construction ne semble pas l'apprécier et ne se complétera automatiquement que si vous utilisez Releaseou Debug. Toute configuration de construction personnalisée interrompt la complétion automatique dans un projet mixte (swift + objc) avec des tests unitaires.

LimeRed
la source
0

Ce lien m'a aidé. Ouvrez les paramètres de construction et remplissez les chemins de recherche du cadre. Voir l'image ci-dessous.

entrez la description de l'image ici

Muruganandham K
la source
0

Les erreurs de construction peuvent interrompre la fonction de saisie semi-automatique dans Xcode.

Adobels
la source
0

J'ai eu le problème avec 100% qui ne fonctionnait pas automatiquement, aucun des écrits ici n'a aidé. Une chose que j'ai remarquée - il était cassé juste après l'ajout de certaines entités dans le fichier .xcdatamodel, qui ont une définition de classe codegen par défaut.

Je n'ai donc pas été surpris lorsque l'utilisation de l'ancien codegen none (et la génération de classes bien sûr) a résolu le problème immédiatement, même sans redémarrer le xcode.

entrez la description de l'image ici

HotJard
la source
0

Avec Xcode 11.1, il Clean Build Folderne suffisait pas de simplement exécuter ou supprimer des données dérivées pour corriger la saisie semi-automatique.

Seulement après avoir redémarré mon Mac , tout était revenu à la normale

Ely
la source
0

Si vous avez un problème avec la complétion / la complétion automatique / l'intellisense bizarre (ne montrant pas les éléments par défaut comme les méthodes des délégués et des protocoles de source de données), changez simplement votre cible (par exemple, du simulateur iPhone 8 à un appareil réel), construisez le projet et revenez à votre cible d'origine .

Similaire avec les problèmes avec Interface Builder (storyboards) ne montrant rien, mais seulement "rien sélectionné" chaque fois que vous sélectionnez une partie de la vue. Passez simplement à un autre Xib / Storyboard (ou même créez-en un nouveau), vérifiez si cela fonctionne là-bas et revenez en arrière.

Ces solutions de contournement ont fonctionné pour moi dans les deux cas (j'ai eu les deux problèmes en une journée avec un projet sur Xcode 10.2.1). D'après ce que j'ai vu sur les forums Internet, il semble que ce soient des bogues jamais corrigés depuis Xcode 6.x ou plus.

À votre santé!

année
la source
0

Dans mon cas (Xcode 11.1), cela s'est produit lorsque j'ai arrêté l' auto-indexation Xcode avec cette commande defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

Alors je le ramène avec defaults write com.apple.dt.Xcode IDEIndexDisable -bool false. puis redémarrez macOS et réexécutez Xcode.

Reza Dehnavi
la source
0

Eu le même problème avec Xcode 11.3. Rien ci-dessus n'a aidé, il s'est avéré que j'avais des erreurs de construction. Corrigez simplement les erreurs de construction et la saisie semi-automatique fonctionnera à nouveau.

Alexandre Nikolenko
la source