2016-07-13 48 views
5

Quando uso la lingua giapponese presso il mio codiceCome utilizzare una stringa non inglese 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)" 
    } 

Affronto il problema

fatal error: unexpectedly found nil while unwrapping an Optional value

+0

Commento utile: se conosci persone che stanno inviando il tuo materiale, per favore chiedi loro di desistere. – halfer

+1

Quindi Pokemon GO ha superato anche Stack Overflow :-) –

+0

Puoi fare riferimento a questo http://stackoverflow.com/questions/32064754/how-to-use-stringbyaddypercentencodingwithallowedcharacters-for-a-url-in-swi –

risposta

3

I caratteri giapponesi (come sarebbe eventuali caratteri internazionali) sicuramente sono un problema. I caratteri consentiti negli URL sono piuttosto limitati. Se sono presenti nella stringa, l'inizializzatore disponibile URL restituirà nil. Questi caratteri devono essere in percentuale sfuggiti.

Al giorno d'oggi, useremmo URLComponents in percentuale per codificare quell'URL. Ad esempio:

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! 

per Swift 2 risposta con codifica cento manuale vedere prior revision of this answer.

+0

'URL.init (stringa:" https://ja.wikipedia.org/wiki/ カ レ ー ラ イ ス ")' fallisce: -/Questo è un URL perfetto, Apple. – Jonny

+1

Beh, tecnicamente, non lo è. I browser Web eseguono tutta questa codifica percentuale in modo così garbato dietro le quinte, che sembra che sia valida, ma se si utilizza, ad esempio, Safari Web Inspector, è possibile vedere che l'URL è in realtà ['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

Buona fortuna.頑 張 っ て く だ さ い – Rob