2016-09-08 3 views
1

Das ist ein Problem und ich kann die Lösung nicht finden. In meinem Programm versuche ich mit url Safari zu öffnen, und das war, bis die Gelegenheit ok: Ich habe versucht, die Seite mit dem russischen Host und Domäne zu verknüpfen, zum Beispiel:NSURL und russische Domänen

let url = "http://карта.рф" 
UIApplication.sharedApplication().openURL(NSURL(string: url)!) 

Dann habe ich einen Fehler:

fatal error: unexpectedly found nil while unwrapping an Optional value

So kann die Klasse NSURL kein Objekt auf einem Link mit russischen Symbolen machen. Ich habe versucht, url.stringByAddingPercentEncodingWithAllowedCharacters (NSCharacterSet.URLFragmentAllowedCharacterSet()) zu verwenden! und ähnliches, aber das Problem ist, dass es ALLE "inkorrekten" Symbole auf andere ändern, aber es ist notwendig, genau russische Seiten in russischen Domänen zu verknüpfen, was bedeutet, dass es keine wirklich falschen Buchstaben in der URL-Adresse gibt.

Ich glaube nicht, dass die NSURL nicht mit nicht-englischen Symbolen arbeiten kann. Kann mir jemand helfen?

+0

@ HamzaAnsari, es ist nur ähnlich, aber klärt nicht alles, was ich will. –

+0

@kennytm, das ist absolut nicht das, was ich brauche. –

Antwort

1

Sie müssen den Zeichensatz auf dem Host Zusammenhang

let string = "http://" + "карта.рф".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! 
let url = NSURL(string:string) 

Wenn Sie auch path und query Verwendung NSURLComponents und codieren die anderen Komponenten getrennt haben zu kodieren.

let components = NSURLComponents() 
components.scheme = "http" 
components.host = "карта.рф".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()) 

let url = components.URL! 
+0

Ich denke, Apple möchte, dass wir jetzt 'URLComponents' verwenden. Diese doppelten Schrägstriche unterbrechen die URL, da sie ebenfalls codiert werden. – Desdenova

+0

@vadian, das löst das Problem, obwohl der übliche Ausdruck (URL) natürlich den Abrakadabra zeigt, aber in Safari ist das die richtige Adresse. –

+0

Ich habe die Antwort aktualisiert, um 'http: //' im ersten Beispiel zu erhalten. – vadian