2015-09-22 15 views
9

Sto costruendo una suite di automazione usando Xcode 7 con swift.Errore UIT di Swift: sequenza di escape non valida in letterale. U201c

miei carichi app con la seguente View Alert:

accettano "Allarme Light" per accedere alla tua posizione mentre si utilizza l'applicazione?

Durante la registrazione con interfaccia utente Test e fare clic su questo avviso ottengo il seguente codice: app.alerts [ "? Consentire \ U201cLight Allarme \ u201c di accedere alla tua posizione mentre si utilizza l'applicazione"]

Nota: le citazioni è stato sostituito con \ u201c

Tuttavia, quando provo e compilare ottengo il seguente errore: "sequenza di escape non valido nel letterale"

Qualcuno sa come ottenere intorno a questo?

+0

Questo sembra essere un bug di Xcode durante la generazione del codice durante il test dell'interfaccia utente, confrontare http://stackoverflow.com/questions/32432068/incomplete-universal-character-name- in-ui-testing per un problema simile. –

+0

Nota: il problema qui è * non * che OP non sa come sfuggire i caratteri unicode nelle stringhe. Questo è il codice * creato da Xcode * durante la registrazione del test dell'interfaccia utente. –

+0

Questo è corretto. Questo è un bug Xcode durante la generazione del codice. Qualche idea su cosa debba essere creato il codice "dovrebbe" secondo la domanda? –

risposta

14

Questo sembra essere un bug in Xcode durante la generazione del codice durante la registrazione dell'interfaccia utente. Swift utilizza \u{NNNN} sequenze di escape nelle stringhe, così

app.alerts["Allow \u{201c}Light Alarm\u{201c} ..."] 

sarebbe corretto, o semplicemente

app.alerts["Allow “Light Alarm“ ..."] 

(In realtà dovrebbe essere "Allow “Light Alarm” ..." dove il secondo marchio citazione è U + 201D = RIGHT DOPPIA MARCHIO DI QUOTAZIONE :)

Un problema simile per codice registrato UI in Objective-C è stato segnalato in Incomplete universal character name in UI Testing.

Non so una soluzione alternativa, sembra che l'unica cosa che è possibile fare al momento sia quella di correggere il codice dopo aver registrato (e inviato un bug report ad Apple).

+0

È molto strano come le tue virgolette corrispondono perfettamente a ciò che è sullo schermo, ma anche se viene visualizzato UIAlertView sto ricevendo un booleano falso restituito dalla query: return app.alerts ["Allow" Light Alarm "per accedere alla tua posizione mentre tu usa l'app? "]. esiste –

+0

@CharlieSeligman: Dovresti usare' app.alerts ["Consenti" Light Alarm "..."] '. - La mia osservazione * "In realtà dovrebbe essere ..." * era inteso solo come un delicato promemoria che ci sono due virgolette diverse (a destra e a sinistra). Il tuo codice utilizza solo le doppie virgolette di sinistra. –

+0

Ciò significa aggiungere tag alle viste o è sufficiente convertire il valore Unicode inserito da Swift? – IIllIIll

0

Installazione di Xcode 7.3 risolto questo problema per me