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


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!

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


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 😉


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.


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


11

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

Data.swift

Data.swift


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


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.


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.


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)


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.


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 ...


"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.


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



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


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.


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


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


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

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
 }

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.


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


0

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


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


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


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é!


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.