objective-c nsstring nsdata

objective c - ¿Cómo convierto un valor de NSString a NSData?



objective-c (10)

C objetivo

NSString *str = @"Hello World"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];

Rápido

let str = "Hello World" let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)

¿Cómo convierto un valor de NSData a NSData ?


En caso de que Swift Developer venga aquí,

para convertir de NSString / String a NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)


En primer lugar, debe usar dataUsingEncoding: lugar de ir a través de UTF8String . Solo usas UTF8String cuando necesitas una cadena C en esa codificación.

Luego, para UTF-16 , simplemente pase NSUnicodeStringEncoding lugar de NSUTF8StringEncoding en su mensaje dataUsingEncoding: .


Hacer:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

luego siéntase libre de continuar con NSJSONSerialization:JSONObjectWithData .

Corrección a la respuesta respecto al terminador NULL.

Tras los comentarios, la documentación oficial y las verifications , esta respuesta se actualizó con respecto a la eliminación de un supuesto terminador NULL:

  1. Según lo documentado por dataUsingEncoding: :

    Valor de retorno

    El resultado de invocar dataUsingEncoding:allowLossyConversion: con NO como el segundo argumento

  2. Según lo documentado por getCString:maxLength:encoding: y cStringUsingEncoding: ::

    tenga en cuenta que los datos devueltos por dataUsingEncoding:allowLossyConversion: no es una cadena C estricta, ya que no tiene un terminador NULL


Para Swift 3, la mayoría se convertirá de String a Data .

let myString = "test" let myData = myString.data(using: .utf8) print(myData) // Optional(Data)


C objetivo:

NSString *str = @"test string"; NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str]; NSString *thatStr = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Rápido:

let str = "test string" let data = NSKeyedArchiver.archivedData(withRootObject: str) let thatStr = NSKeyedUnarchiver.unarchiveObject(with: data) as! String


NSString *str = @"Banana"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];


NSString *str = @"hello"; NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];


NSString *str = @"helowrld"; // This converts the string to an NSData object NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

Puedes tomar referencia desde este link


NSString* str = @"teststring"; NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];