web-dev-qa-db-fra.com

La saisie semi-automatique Xcode 9 ne fonctionne pas à 100% - fonctionne partiellement

Ce matin, Xcode 9.0 (9A235) affiche une nouvelle/étrange boîte de complétion automatique qui n’est plus du tout ce qu’elle était. Comment puis-je obtenir la boîte de saisie semi-automatique complète de sorte que la saisie semi-automatique ressemble à son état habituel? 

 enter image description here

48
Ernie

La suppression du dossier DERIVED DATA semblait résoudre mon problème. Merci à cet article: Swift println () ne montrant pas les options de saisie semi-automatique lors de l'écriture du code

39
Ernie

Essayer: 

  1. Allez dans Xcode> Préférences> Édition de texte
  2. Sous Code de complétion - Décochez la case "Suggérer les complétions lors de la frappe".
  3. Quittez Xcode puis relancez Xcode.
  4. Allez dans Xcode> Préférences> Édition de texte encore
  5. Quittez Xcode puis relancez Xcode.
  6. Maintenant, allez à Complétion du code et cochez 'Proposer des complétions lors de la frappe'.
  7. Essayez de taper la fonction de bibliothèque ou enum et profitez-en!
64
Lal Krishna

Choses à essayer:

1

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

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 en cache

Nettoyer le projet -> Cmd + Shift + K

Nettoyer 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 de la flèche vous amène à DerrivedData -> Supprimer le dossier


3

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

Tous les fichiers .Swift et .m du projet doivent figurer dans cette liste, sinon ils ne seront pas automatiquement complétés.


4

Optimisez votre éditeur:

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

Ecrivez un code modulaire/POO pour que le compilateur ait moins de code à lire.

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

18
Sethmr

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 (en bleu dans la capture d'écran ci-dessous) .  Screenshot of Xcode top right view buttons

 Screenshot of Xcode Target Membership options

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.

11
Isaiah Turner

Supprimer le fichier des cibles de test a résolu mon problème.

4
Martin Jun

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

Cette réponse de (axel} _ m'a aidé à réparer.

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

  1. Allez à YourProject.xcodeproj en cliquant avec le bouton droit de la souris et ouvrez Show Package Contents
  2. Allez à xcuserdata et supprimez votre youruser.xcuserdatad

Si vous avez aussi la xcworkspace (si vous avez déjà des pods installés), passez aux étapes 3 et 4, sinon sautez simplement les étapes 3 et 4:

  1. Allez à YourProject.xcworkspace en cliquant avec le bouton droit de la souris et ouvrez Show Package Contents
  2. Allez à xcuserdata et supprimez votre youruser.xcuserdatad

  3. Quitter Xcode

  4. Supprimer Données dérivées en utilisant Terminal:

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

  1. Ouvrez Xcode et vérifiez si cela fonctionne.

 enter image description here 

4
Gent Berani

Veuillez essayer ceci:

Sélectionnez le fichier >> vérifiez si le fichier est ajouté aux cibles UITesting ou UnitTesting (Inspecteur de fichier -> Appartenance à la cible) . Si tel est le cas, décochez-les 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 ça aidera quelqu'un.

3
abhi1992

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

1
Xcoder

Utilisez Command + B
ou Command + R à Construire ou Exécuter le projet
Xcode fait parfois des bêtises;)

1
Mehdi

Je viens de perdre une journée à essayer de résoudre le cauchemar 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 du vaudou n'ont pas réussi à faire la différence.

J'ai abandonné et 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 cela a ensuite recommencé à fonctionner dans mon projet sous Xcode. Je ne peux pas garantir que ça va continuer à fonctionner ...

1
SimonTheDiver

Problèmes principalement dus à l'emplacement manquant de certains fichiers dans le navigateur de projet (erreurs de génération)

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

Ou tu peux:

  1. Supprimer DerivedData (commande + shift + K)
  2. Nettoyer le dossier de construction (commande + shift + option + K)
  3. Appuyez de nouveau sur Build (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 génération de se terminer automatiquement.
  5. Corrigez et corrigez tous les fichiers manquants que vous voyez.

J'espère que cela t'aides 

1
Vinh Nguyen
  1. vérifiez si vous avez sélectionné le Suggest completions while typing dans Xcode -> Préférences -> Édition de texte
  2. accédez à l'utilisateur-> Bibliothèque-> Développeur-> Xcode-> DerivedData dans le Finder et supprimez le dossier DerivedData
1
qingfeng

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

Data.Swift

Data.Swift

1
ScottyBlades

Cela peut être dû à de nombreuses raisons, notamment à cause d'un "problème de mémoire", c’est-à-dire lorsque votre système manque de mémoire, cela se produit. Vous pouvez vérifier votre utilisation de la mémoire en utilisant "Moniteur d'activité" dans mac .
Essayez de nettoyer le projet avec [commande + shift + k]
Quittez le XCode et relancez-le & construisez-le une fois, puis commencez à taper maintenant, la saisie semi-automatique devrait fonctionner correctement.

1
Bharath

Les erreurs de construction peuvent casser la fonctionnalité d'auto-complétion dans Xcode.

0
Adobels

J'ai ajouté ici ce qui se passait dans mon projet au cas où il pourrait aider quelqu'un d'autre ... J'avais 2 fichiers du même nom et je n'avais pas réalisé.

0
TomCobo

Il semble que ce soit spécifique au fichier dans mon cas (Xcode 9.2) Pour moi, le correctif était:

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

Enfin, après 3 heures d’essais, tout est fait à l’aide de l’auto-complétion.

0
Matjan

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

 enter image description here

0
Muruganandham K

Voici un peu de solution de contournement, mais cela 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 pour le projet ... Cela peut être fait à l'aide de ce lien:

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

  4. Fermez XCode.

  5. Rouvrez XCode (laissez l'indexation terminée) et construisez le projet ... Commande + B

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

0
Abhinav Dobhal

Pour moi, le problème est survenu lorsque j'ai ignoré 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 ses références seraient également délirés. 

Cependant, il y avait toujours une référence au fichier (en rouge) dans le navigateur du projet. La suppression du fichier (maintenant inexistant) dans le navigateur de projet a automatiquement rétabli l'auto-complétion.

Aucune quantité de nettoyage, suppression de données dérivées, etc. n'a aidé. J'ai seulement réalisé que le fichier supprimé était toujours visible lorsque j'ai essayé de construire mon projet, ce qui a bien sûr échoué car il n'a pas pu trouver ce fichier.

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

0
JohnV

Je voudrais ajouter une solution supplémentaire à la pile de solutions, car c’est la seule qui a fonctionné pour moi et n’est introuvable nulle part.

Xcode est normalement fourni 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’aimer et ne se complétera automatiquement que si vous utilisez Release ou Debug. Toute configuration de construction personnalisée interrompt l'auto-complétion dans un projet mixte (Swift + objc) avec des tests unitaires.

0
LimeRed

J'ai eu le problème avec 100% ne fonctionne pas l'auto-complétion, aucun des écrits ici n'a aidé. Une chose que j’ai remarquée - c’est cassé juste après l’ajout de certaines entités dans le fichier .xcdatamodel, dont la définition de classe codegen est définie par défaut.

Donc, je n'étais pas surpris lorsque l'utilisation de codegen à l'ancienne style none (et la génération de classes bien sûr) corrigeait immédiatement le problème, même sans redémarrer le xcode.

enter image description here

0
HotJard

Mon cas peut sembler trop spécifique pour aider, mais il peut donner à quelqu'un une idée de la façon de résoudre le problème de l'auto-complétion brisée. 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é. En outre, on pouvait entendre le ventilateur de l'ordinateur devenir plus fort, indiquant que quelque chose était surchargé de travail (aucune autre application ne fonctionnait), il est à noter que je travaillais 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 en fonction des préférences de l'utilisateur. La newPosition est une CGPoint à laquelle 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 arrêté! J'ai pu recréer ce problème spécifique plusieurs fois en recopiant 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
 }
0
Todd

Pour moi, cela se passait dans mon fichier de test, car cela ne faisait pas partie d'une cible pour une raison quelconque. Définir son appartenance cible a résolu le problème.

0
Menno