2017-09-09 1 views
0

ich eine URL in UIWebView über den Wert von UITextField in der URL-Abfrage laden mag:Mit russischen Zeichen in URL-Abfrage

:

let texts = SearchBox.text! 
let searchurl = "http://sngpoisk.ru/search-location/?search_keywords=\(texts)&search_location=&place_location=&latitude=&longitude=" 
let urls = NSURL(string:searchurl) 
let ret = NSURLRequest(URL:urls!) 
Browser!.loadRequest(ret) 

Aber wenn texts russische Zeichen enthält, tritt ein Fehler auf

EXC_BAD_INSTRUCTION (code = EXC_1386_INVOP, Subcode = 0x0)

Antwort

0

der Grund des Laufzeitfehler ist yo Sie können eine optionale Instanz der NSURL, die eigentlich nil ist, auspacken.

Der Grund für urls ist nil ist searchurl Zeichenfolge enthält invalid Zeichen (außerhalb des 7-Bit-ASCII-Bereichs). Um in URLs verwendet zu werden, sollten Zeichen prozentual kodiert sein.

Swift 2 (Ich denke, Sie diese Version verwenden):

let encodedTexts = texts.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 
if let encodedTexts = encodedTexts { 
    let searchurl = "http://sngpoisk.ru/search-location/?search_keywords=\(encodedTexts)&search_location=&place_location=&latitude=&longitude=" 
    let urls = NSURL(string:searchurl) 
    if let urls = urls { 
     let ret = NSURLRequest(URL:urls) 
     Browser!.loadRequest(ret) 
    } 
} 

Swift 3:

let encodedTexts = texts.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) 
if let encodedTexts = encodedTexts { 
    let searchurl = "http://sngpoisk.ru/search-location/?search_keywords=\(encodedTexts)&search_location=&place_location=&latitude=&longitude=" 
    let urls = URL(string:searchurl) 
    if let urls = urls { 
     let ret = URLRequest(url:urls) 
     Browser!.loadRequest(ret) 
    } 
} 
0

Ich finde Vielen Dank

let texts = Searchd.text! 
    let encodedTexts = texts.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 
    if let encodedTexts = encodedTexts { 
     let searchurl = "http://sngpoisk.ru/search-location/?search_keywords=\(encodedTexts)&search_location=&place_location=&latitude=&longitude=" 
     let urls = NSURL(string:searchurl) 
     if let urls = urls { 
      let ret = NSURLRequest(URL:urls) 
      Browser!.loadRequest(ret) 
     } 
    } 
Verwandte Themen