J'ai rencontré une situation où xcode cesse de s'auto-compléter et si vous essayez d'écrire une variable déjà définie, xcode dit << error type>>
.
Voici mon erreur:
Cela indique souvent que votre code n'est pas compilé pour le moment. Swift a souvent du mal à calculer des types sur du code qui, en soi, n’est pas correct. Dans certains cas, c'est un bug dans le compilateur. L'utilisation de AnyObject
peut être particulièrement déroutante pour le compilateur et doit être évitée autant que possible. Dans ce cas, AnyObject
est requis, mais vous devez essayer de le convertir rapidement en un type spécifique. Ne retournez pas [AnyType]
par exemple si vous pouvez éventuellement l'aider.
Mais la réponse courte est que le compilateur Swift est toujours en évolution et qu’il ne peut pas toujours traiter les types dans des situations complexes, en particulier sur du code partiel ou (actuellement) incorrect.
Notez que vous utilisez var
pour beaucoup de choses qui devraient être let
. Sauf si vous devez réellement modifier la variable, vous devriez préférer let
. Cela vous aide à prévenir de nombreux types de bogues et peut être plus facile à gérer pour le compilateur (car la variable a moins de façons de changer).
J'ai commencé à voir les mêmes erreurs après la mise à jour de Xcode 6.1 et iOS 8.1. J'ai constaté que si vous supprimez le fichier ModuleCache à /Users/username/Library/Developer/Xcode/DerivedData/ModuleCache
chemin, il corrige temporairement l'erreur. Et vous ne devez pas fermer Xcode ou le projet pour le faire. Après avoir supprimé le fichier, attendez un peu que Xcode indexe à nouveau les fichiers du projet. Après cela, le problème est généralement résolu pendant un certain temps.
Comme cela ne résout pas le problème de façon permanente, évitez d'écrire des codes qui pourraient causer ce problème selon d'autres réponses jusqu'à ce que Apple le résolve.
<<error type>>
peut résulter du fait que le compilateur Swift n'a pas trouvé le fichier d'en-tête.
Avez-vous une sorte de structure de dossier dans laquelle se trouve votre code source? Si c'est le cas, essayez de définir Scan All Source Files for Includes
sur YES.
Cela permettra à Xcode de parcourir tous ces dossiers lors de la recherche du fichier d’en-tête.
Regardez où le fichier dans lequel votre type est défini est stocké . Dans vos paramètres de construction, assurez-vous que cet emplacement est inclus dans les chemins de recherche.
S'il fait partie des chemins de recherche d'en-tête d'utilisateur, assurez-vous que Always Search User Paths
est activé.
Regardez les super-classes, etc. de votre type. Sont-ils inclus dans le chemin de recherche également?
Découvre que l'erreur disparaît et que l'auto-complétion fonctionne à nouveau si j'initialisais la variable comme ceci:
var name: String = "my name"
au lieu de :
var name = "my name" as String
Premièrement, essayez CMD-SHIFT-K suivi CMD-R pour nettoyer puis exécutez la construction.
Si cela ne fonctionne pas, fermez XCode, supprimez les données dérivées et rouvrez XCode.