2015-09-22 5 views
9

Ich baue eine Automatisierungs-Suite mit Xcode 7 mit Swift.Swift UITesting-Fehler: Ungültige Escape-Sequenz im Literal. U201c

Meine app Lasten mit folgenden Warnungsansicht:

zulassen „Light Alarm“ Ihren Standort zuzugreifen, während Sie die App verwenden?

Wenn ich mit UI Testing aufnehmen und klicken Sie auf diese Warnung ich den folgenden Code erhalten: app.alerts [ "? Allow \ U201cLight Alarm \ u201C Ihren Standort zuzugreifen, während Sie die App verwenden"]

Hinweis: die Zitate wurde u201C

mit \ ersetzt

Allerdings, wenn ich versuchen und kompilieren ich die folgende Fehlermeldung erhalten: „Ungültige Escape-Sequenz in wörtlichen“

Wer weiß, wie das umgehen?

+0

Dies scheint ein Xcode Fehler zu sein, wenn der Code während des UI-Tests zu erzeugen, zu vergleichen http://stackoverflow.com/questions/32432068/incomplete-universal-character-name- In-u-Test für ein ähnliches Problem. –

+0

Hinweis: Das Problem hier ist * nicht *, dass OP nicht wissen, wie Unicode-Zeichen in Strings entkommen. Dies ist Code *, der während der Aufzeichnung des UI-Tests mit Xcode * erstellt wurde. –

+0

Das ist richtig. Dies ist ein Xcode-Fehler beim Generieren von Code. Irgendwelche Ideen, was der Code geschaffen hat, sollte der Frage entsprechen? –

Antwort

14

Dies scheint ein Fehler in Xcode beim Generieren von Code während der UI-Aufnahme zu sein. Swift verwendet \u{NNNN} Escape-Sequenzen in Stringliterale, so

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

wäre richtig, oder einfach

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

(Eigentlich sollte es "Allow “Light Alarm” ..." sein, wo die zweite Anführungszeichen U + 201D = RECHTS DOUBLE ZITIERUNGSMARK :)

Ein ähnliches Problem für UI aufgezeichneten Code in Objective-C wurde in Incomplete universal character name in UI Testing gemeldet.

Ich kenne keine Problemumgehung, es scheint, dass das einzige, was Sie tun können derzeit ist, den Code nach der Aufzeichnung zu beheben (und einen Fehlerbericht an Apple gesendet).

+0

Es ist sehr seltsam, wie Ihre Zitate perfekt übereinstimmen, was auf dem Bildschirm ist, aber obwohl die UIAlertView angezeigt wird, erhalte ich eine falsche Boolean von der Abfrage zurückgegeben: return app.alerts ["Erlauben" Light Alarm "auf Ihren Standort während Sie zugreifen benutze die app? "]. exists –

+0

@CharlieSeligman: Du müsstest' app.alerts ["Allow" Light Alarm "..."] 'verwenden. - Meine Bemerkung * "Eigentlich sollte es ..." * war nur als sanfte Erinnerung gedacht, dass es zwei verschiedene (rechts und links) Anführungszeichen gibt. Ihr Code verwendet nur das linke doppelte Anführungszeichen. –

+0

Bedeutet dies das Hinzufügen von Tags zu den Ansichten oder genügt es, den von Swift eingefügten Unicode-Wert zu konvertieren? – IIllIIll

0

Installation Xcode 7.3 fixiert dieses Problem für mich