2016-01-28 4 views
11

Ho una domanda su Xcode (Swift). A volte quando scrivo un'istruzione if. Qualcosa di simile a questo:Xcode - Carattere non valido nel file sorgente (sostituire "" con "")

if(a == 2){ 
//do Sth 
} else { 
//do Sth 
} 

Xcode mi genera un errore: "Carattere non valido nel file sorgente" So che è un grosso problema e risolto cliccando su "Fix-it" ma voglio sapere ciò che è il problema. Che non ha senso per me ...

Error

mio Xcode è il 7.2 e sto usando Swift - non so se questo è solo un problema di Swift.

+5

http://stackoverflow.com/questions/28750313/no-break-space-causing-problems-in-xcode – Vizllx

+0

Ah grazie! Non ho trovato la domanda, ma questo dovrebbe essere lo stesso problema. Grazie! :) – Godlike

risposta

8

Stavo avendo questo problema. Il modo in cui l'ho risolto è di 1) copiare tutto ciò che si ha in Sublime Text o in un altro editor di codice e dare un'occhiata (potrebbe essere necessario abilitare la visualizzazione di caratteri nascosti). Il mio aveva un codice in là DC2 che è una sorta di carattere di controllo ASCII. Per me è stato causato dal fatto che avevo messo il campo da giuoco in esecuzione manuale e legato a una scorciatoia da tastiera che sembrava entrare in quel controllo ogni volta che lo eseguivo usando la scorciatoia. Ho appena cambiato il collegamento e rimosso i caratteri ASCII come sono stato in grado di vederli in Sublime Text. (Il collegamento nei commenti all'OP relativo alla modalità da sinistra a destra non aveva senso e non ha funzionato per me.)

+0

denle una medalla a este wey –

3

Ho riscontrato questo problema quando utilizzavo una tastiera non Apple con il mio iMac. Probabilmente anche il tuo caso. Aggiungono caratteri di controllo inutili! Un modo per risolverlo in Xcode ischoose dal menu Editor> Show Invisibles e vedere se ci sono caratteri indesiderati in cui viene generato l'errore e rimuoverli.

1

Editor-> Mostra Invisibili non ha mostrato il personaggio che stava causando un problema per me. No-break-space (u00a0) verrà visualizzato come spazio senza indicatore "punto". Tuttavia, è davvero difficile da vedere e l'ho completamente perso la prima volta. Lo zoom aiuta.

Un modo che ho trovato per rilevare i caratteri non validi è quello di utilizzare codice Visual Studio e attivare le impostazioni:

"editor.renderControlCharacters": true "editor.renderWhitespace": "tutti"

Questo deve lo stesso problema di visibilità con no-break-space come Xcode, tuttavia mostra altri caratteri speciali.

Per rendere più evidente e possibilmente rilevare più caratteri non validi, installare l'estensione "ascii-unicode-escape" e seguire le istruzioni.

Non capisco perché Xcode consente questi caratteri non validi, li inserisce nei file di origine senza motivo e non offre nemmeno un'opzione per rilevarli! Sto cercando di scrivere codice, non segreti in inchiostro invisibile, dannazione !! Immagino che sia meno di un problema per il codice compilato, che mostrerà un errore, ma non così conveniente con il codice dello shader.

0

Ho lo stesso problema. Ho trovato una soluzione dopo numerosi test. Speriamo che possa salvare altre ore di ricerca in questa terribile esperienza Xcode.

Il problema è che ho una tastiera FILCO Minila, che ha la chiave "App" accanto alla "freccia sinistra". Per errore digito "App" accidentalmente, digitando un carattere invisibile "DEL" (Data Link Escape, Unicode 0010). Poteva essere visto solo quando copiava su Sublime.Non è nemmeno visibile in "Editor -> Invisibili" di Xcode (Parlando di una buona esperienza utente ...)

Magicamente questo non accade a Sublime o VSCode, solo a Xcode. Quindi non ci sono scuse per Xcode, immagino?

La correzione è scaricare Karabiner, un keymapper avanzato per macOS e invalidare la chiave "App" o mapparla a qualcos'altro. Il Karabiner invaliderebbe anche il keymapping nella configurazione di tastiera predefinita del sistema. Quindi dovresti rimappare cose come "cmd", "alt" se le hai personalizzate. Se è così, essere sicuri di mappare entrambe sinistra & giusti tasti modificatori in Moschettone, perché secondo visualizzatore di eventi chiave del Karabiner, la mappa dei tasti di default del sistema sarebbe mappare left_alt & left_cmd a right_cmd e right_alt ... solo fastidioso come l'inferno ...

Mi ci sono voluti 2 mesi per realizzare questo problema e 2 ore per scoprire che è il tasto "app" che è il colpevole e lo aggiusta.