J'ai une question à propos de Xcode (Swift). Parfois, lorsque j'écris une instruction if. Quelque chose comme ça:
if(a == 2){
//do Sth
} else {
//do Sth
}
Xcode me lance une erreur: "Caractère invalide dans le fichier source" Je sais que ce n'est pas grave et est corrigé en cliquant sur "Fix-it" mais je veux savoir quel est le problème. Cela n'a pas de sens pour moi ...
Mon Xcode est sur 7.2 et j'utilise Swift - Je ne sais pas s'il s'agit simplement d'un problème Swift.
J'avais ce problème. J'ai résolu ce problème en 1) copiant ce que vous avez dans Sublime Text ou dans un autre éditeur de code et en jetant un coup d'œil (vous devrez peut-être activer l'affichage des caractères masqués). Le mien avait un code dans DC2 qui est une sorte de caractère de contrôle ASCII. Pour moi, cela était dû au fait que j'avais mis le terrain de jeu en exécution manuelle et lié à un raccourci clavier qui semblait entrer ce caractère de contrôle à chaque fois que je l'exécutais à l'aide du raccourci. Je viens de changer le raccourci et de supprimer les caractères ASCII, car je pouvais les voir dans Sublime Text. (Le lien dans les commentaires sur l'OP concernant le mode gauche à droite n'avait aucun sens et ne fonctionnait pas pour moi.)
J'ai rencontré ce problème lorsque j'utilisais un clavier autre qu'Apple avec mon iMac. Probablement votre cas aussi. Ils ajoutent des caractères de contrôle inutiles! Une façon de résoudre ce problème dans Xcode consiste à choisir dans le menu Editeur> Afficher les invisibles et à voir s’il existe des caractères indésirables sur lesquels l’erreur est générée et à les supprimer.
Pour moi, c’est la touche ESC - elle est complètement reproductible! Si je lance la recherche et appuie sur ESC dans la fenêtre de recherche, je trouve également les occurrences marquées - et je ne peux les remplacer par rien. Mais ce n'est pas affiché même avec "Show invisible"!
solution finale: liez le raccourci clavier ESC à "Annuler". C'est si simple.
Editeur-> Afficher les invisibles n'a pas montré le personnage qui posait problème pour moi. No-break-space (u00a0) sera affiché comme un espace sans indicateur "point". Cependant, c'est vraiment difficile à voir et cela m'a complètement manqué la première fois. Le zoom aide.
L'une des méthodes que j'ai détectées pour détecter les caractères non valides consiste à utiliser le code Visual Studio et à activer les paramètres:
"editor.renderControlCharacters": true "editor.renderWhitespace": "tous"
Cela pose le même problème de visibilité avec X-break-space que No-code, mais il affiche d'autres caractères spéciaux.
Pour le rendre plus évident et éventuellement détecter plus de caractères non valides, installez l'extension "ascii-unicode-escape" et suivez les instructions.
Je ne comprends pas pourquoi Xcode autorise ces caractères non valides, les insère sans raison dans vos fichiers source et ne donne même pas la possibilité de les détecter! J'essaye d'écrire du code, pas des secrets à l'encre invisible, bon sang !! J'imagine que c'est moins un problème pour le code compilé, qui affichera une erreur, mais moins pratique avec le code shader.
J'ai le même problème. J'ai trouvé une solution après des tests approfondis. Espérons que cela pourrait épargner aux autres de longues heures de recherche dans cette terrible expérience de Xcode.
Le problème est que j'ai un clavier FILCO Minila, qui a les touches "App" juste à côté de "flèche gauche". J'appuyais accidentellement sur «App» en tapant très vite, et il entrait un caractère invisible «DEL» (Data Link Escape, Unicode 0010). Il ne pouvait être vu que lorsque copié-collé dans Sublime. Il n'est même pas visible dans le propre 'Editeur -> Show Invisibles' de Xcode (parler d'une bonne expérience utilisateur ...)
Comme par magie, cela ne se produit pas avec Sublime ou VSCode, mais uniquement avec Xcode. Donc, pas d'excuses pour Xcode, je suppose?
Le correctif consiste à télécharger Karabiner, un keymapper avancé pour macOS, et à invalider la touche 'App' ou à la mapper sur autre chose. Le mousqueton invaliderait également votre keymapping dans la configuration du clavier par défaut du système. Vous devrez donc remapper des éléments tels que "cmd", "alt" si vous les avez personnalisés. Si tel est le cas, assurez-vous de mapper les deux touches de modification gauche et droite dans Karabiner, car, selon l'observateur d'événements clés de Karabiner, le keymap par défaut du système mapperait left_alt & left_cmd à right_cmd et right_alt ... Juste ennuyeux ...
Il m'a fallu 2 mois pour comprendre ce problème et 2 heures pour découvrir que c'est la clé de l'application qui est le coupable et le réparer.
Alt + Space command crée un caractère caché spécial dans les fichiers Xcode. Vous pouvez voir les détails du bug ici
Pour trouver ce caractère spécial, j'ai utilisé un entraînement un peu enfantin (Apple pourrait avoir besoin de résoudre ce problème correctement, car "montrer invisibles" ne le montre pas.)
Recherchez les caractères 'Espace' dans le fichier, puis vérifiez qu'ils sont masqués, comme dans la capture d'écran.
Voir ci-dessous les captures d'écran, à travers lesquelles vous pouvez deviner l'emplacement du personnage spécial caché dans un fichier.
J'utilise XCode 10.1.
Avec Xcode: Xcode n’aide pas, même après avoir affiché invisibles.
Ensuite, vous pouvez copier le code dans Sublime Text => vous verrez ces caractères invisibles qui sont les <0x0f> . Cliquez sur l'image pour voir les détails.
Avec Sublime Text 3, ça marche!
=> Ensuite, vous savez où supprimer les redondances. J'espère que cela pourra aider!