2016-07-13 3 views
5

Wenn ich japanische Sprache an meinem CodeWie verwendet man nicht-englische Zeichenfolge in NSURL?

func getChannelDetails(useChannelIDParam: Bool) { 
    var urlString: String! 
    if !useChannelIDParam { 
     urlString = "https://www.googleapis.com/youtube/v3/search?part=snippet%2Cid&maxResults=50&order=viewCount&q=ポケモンGO&key=\(apikey)" 
    } 

ich das Problem

fatal error: unexpectedly found nil while unwrapping an Optional value

+0

Hilfreiche Bemerkung: Wenn Sie Leute kennen, die Ihr Material upvotieren, bitten Sie sie, zu unterlassen. – halfer

+1

Also Pokemon GO hat Stack Overflow auch überholt :-) –

+0

Sie können auf diese http://stackoverflow.com/questions/32064754/how-to-use-stringbyaddingpercentencodingwithhallowedcharacters-for-a-url-in-swi –

Antwort

3

Die japanische Schriftzeichen stellen (wie es alle internationalen Zeichen) auf jeden Fall ein Problem sind. Die in URLs erlaubten Zeichen sind ziemlich begrenzt. Wenn sie in der Zeichenfolge vorhanden sind, gibt der fehlbare URL Initializer nil zurück. Diese Zeichen müssen Prozent-Escapezeichen sein.

Heutzutage würden wir URLComponents verwenden, um diese URL prozentual zu codieren. Zum Beispiel:

var components = URLComponents(string: "https://www.googleapis.com/youtube/v3/search")! 
components.queryItems = [ 
    URLQueryItem(name: "part",  value: "snippet,id"), 
    URLQueryItem(name: "maxResults", value: "50"), 
    URLQueryItem(name: "order",  value: "viewCount"), 
    URLQueryItem(name: "q",   value: "ポケモンGO"), 
    URLQueryItem(name: "key",  value: apikey) 
] 
components.percentEncodedQuery = components.percentEncodedQuery?.replacingOccurrences(of: "+", with: "%2B") // you need this if your query value might have + character, because URLComponents doesn't encode this like it should 
let url = components.url! 

für Swift 2 Antwort mit manueller Codierung Prozent finden prior revision of this answer.

+0

'URL.init (string:" https://ja.wikipedia.org/wiki/ カ レ レ イ イ ス ")' scheitert: -/Das ist eine perfekte URL, Apple. – Jonny

+1

Nun, technisch ist es nicht. Web-Browser tun all diese Prozent-Codierung so elegant hinter den Kulissen, dass es scheint, als ob sie gültig wäre. Wenn Sie jedoch beispielsweise den Safari Web Inspector verwenden, können Sie sehen, dass die URL tatsächlich [https: // ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AC%E3%83%BC%E3%83%A9%E3%82%A4%E3%82%B9'](https:/) /ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AC%E3%83%BC%E3%83%A9%E3%82%A4%E3%82%B9). – Rob

+0

Viel Glück.い 張 っ て く だ い い – Rob