NSURL URLWithString: es nulo con caracteres acentuados no ingleses

Tengo la siguiente cadena …

NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22"; 

Tenga en cuenta que tiene algunos caracteres acentuados. Cuando bash convertirlo en una url, la URL devuelta es nula …

 [NSURL URLWithString:googleSearchString]; 

Por lo tanto, normalmente la URL funciona, excepto cuando hay caracteres acentuados no ingleses en la cadena. ¿Alguna ayuda sobre cómo manejar eso?

Debe escapar de los caracteres especiales para que funcione correctamente. Algo como:

 [NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

Usando Swift 2.2

Para escaparse de caracteres no ingleses , por ejemplo: para hacer una solicitud de URL, haga lo siguiente:

let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

Aquí urlPath es un Optional y la path es tu URL original (la que tiene caracteres no ingleses)

Use esto para SWIFT 4:

 let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) let myURL = URL(string: url) 

En el método 2k16, stringByAddingPercentEscapesUsingEncoding: está en desuso y no hay forma de escapar esto correctamente. Cuando la URL está predefinida, solo use una cadena codificada en el navegador, porque el método stringByAddingPercentEncodingWithAllowedCharacters: no puede escapar a la URL completa.

Algunas veces, un espacio en la url puede causar este problema.