2016-07-13 20 views
5

Kiedy używać języka japońskiego w moim koduJak używać nieangielskiego łańcucha w 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)" 
    } 

I zmierzyć się z problemem

fatal error: unexpectedly found nil while unwrapping an Optional value

+0

Przydatne uwagi: jeśli znasz ludzi, którzy zajmują się Twoim materiałem, poproś ich o zaniechanie. – halfer

+1

Więc Pokemon GO wyprzedził również przepełnienie stosu :-) –

+0

Możesz odwołać się do tego http://stackoverflow.com/questions/32064754/how-to-use-stringbyaddingpercentencodingwithallowedcharples-for-a-url-in-swi –

Odpowiedz

3

japońskiej znaków (jak byłoby żadnych znaków międzynarodowych) zdecydowanie są problemem. Znaki dozwolone w adresach URL są dość ograniczone. Jeśli są obecne w łańcuchu, inicjator fail-in URL zwróci nil. Te znaki muszą być oznaczone symbolem%.

W dzisiejszych czasach użylibyśmy URLComponents do zakodowania procentowego tego adresu URL. Np

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! 

do szybkiej odpowiedzi 2 z ręcznym kodowania procent patrz prior revision of this answer.

+0

'URL.init (ciąg:" https://ja.wikipedia.org/wiki/ カ レ ー ラ イ ス ")' nie działa: -/To idealny adres URL, Apple. – Jonny

+1

Cóż, technicznie rzecz biorąc, nie jest. Przeglądarki internetowe po prostu wykonują cały ten procent kodowania, tak wdzięcznie za kulisami, że wydaje się, że jest poprawny, ale jeśli korzystasz na przykład z Safari Web Inspector, możesz zobaczyć, że URL to [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

Powodzenia. 2 張 っ て く だ さ い – Rob