¿Por qué CFStringEncodings no tiene UTF8 en Swift?

Estoy intentando crear una cadena codificada por ciento en Swift para que pueda enviar text con security como una request GET . Encontré un código Objective C que estoy tratando de convertir a Swift. He escrito el siguiente código Swift:

 CFURLCreateStringByAddingPercentEscapes(nil, CFStringRef(encodedString), nil, CFStringRef("/%&=?$#+-~@<>|\\*,.()[]{}^!"), kCFStringEncodingUTF8) 

No hay kCFStringEncodingUTF8 en Swift … Si hace clic con el button derecho en la fuente CFStringEncodings , verá que hay un millón de cosas allí pero no UTF8. No entiendo. ¿Cómo puedo usar la encoding de cadena UTF8 en esta situación?

EDIT: Encontré una manera de codificar una cadena, pero todavía no entiendo qué sucedió con kCFStringEncodingUTF8

La encoding de cadena UTF-8 se define como

 enum CFStringBuiltInEncodings : CFStringEncoding { // ... case UTF8 /* kTextEncodingUnicodeDefault + kUnicodeUTF8Format */ // ... } 

y se puede usar como

 let orig = "a/b(c)" let escaped = CFURLCreateStringByAddingPercentEscapes(nil, orig, nil, "/%&=?$#+-~@<>|\\*,.()[]{}^!", CFStringBuiltInEncodings.UTF8.rawValue) println(escaped) // a%2Fb%28c%29 

Como lo menciona @Zaph en un comentario, stringByAddingPercentEncodingWithAllowedCharacters puede ser más fácil de usar:

 let charset = NSCharacterSet(charactersInString: "/%&=?$#+-~@<>|\\*,.()[]{}^!").invertedSet let escaped = orig.stringByAddingPercentEncodingWithAllowedCharacters(charset) 

o utilice uno de los sets de caracteres pnetworkingefinidos de Creación de un set de caracteres para la encoding URL .

kCFStringEncodingUTF8 ha sido reemplazado en Swift con: UTF8 .

Hay un nuevo método NSString agregado en iOS7 que toma un set de caracteres y se han agregado una serie de juegos de caracteres especializados y, por supuesto, puedes crear sets de caracteres especializados. Hay muy pocas razones para usar CFURLCreateStringByAddingPercentEscapes más. Vea esto: SO Responder