tutorial the programming logo lenguaje language apple ios swift

ios - the - swift wikipedia



Uso de Swift String con NSData sin NSString (3)

¿Es posible iniciar una cadena Swift (no NSString ) con los contenidos de un objeto NSData sin crear primero un NSString?

Sé que puedo usar esto con NSString:

var datastring = NSString(data data: NSData!, encoding encoding: UInt)

Pero, ¿cómo puedo usar un tipo Swift String básico? Pensé que Swift strings y NSStrings eran intercambiables, ¿realmente tengo que sacar los datos de NSData usando NSString y luego asignar ese valor a una cadena Swift?


A partir de Swift 1.2 no son intercambiables, pero son convertibles, por lo que realmente no hay razón para no usar NSString y sus constructores cuando lo necesites. Esto funcionará bien:

var datastring = NSString(data:data, encoding:NSUTF8StringEncoding) as! String

¡El as! es necesario porque NSString(...) puede devolver nil para la entrada no válida. Si no está seguro de que los datos representen una cadena UTF8 válida, puede usar lo siguiente para devolver una String? (también conocido como Optional<String> ).

var datastring = NSString(data:data, encoding:NSUTF8StringEncoding) as String?

Una vez construido, puede utilizar la datastring al igual que cualquier otra cadena de Swift, por ejemplo

var foo = datastring + "some other string"


En Swift 2.0 puedes hacer algo como esto: -

import Foundation var dataString = String(data: YourData, encoding: NSUTF8StringEncoding)

En Swift 3.0: -

import Foundation var dataString = String(data: data, encoding: String.Encoding.utf8)


var buffer = [UInt8](count:data.length, repeatedValue:0) data.getBytes(&buffer, length:data.length) var datastring = String(bytes:buffer, encoding:NSUTF8StringEncoding)