¿Cómo convierto un valor NSString a NSData?

Resuelto asked hace 54 años • 0 respuestas

¿ Cómo convierto un NSStringvalor a NSData?

 avatar Jan 01 '70 08:01
Aceptado
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
flitzwald avatar May 23 '2009 11:05 flitzwald
NSString *str = @"helowrld";
// This converts the string to an NSData object
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

Puedes tomar referencia desde este enlace.

ALOK KUMAR avatar Mar 10 '2015 12:03 ALOK KUMAR

Hacer:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

entonces siéntete libre de continuar NSJSONSerialization:JSONObjectWithData.


Corrección a la respuesta sobre el terminador NULL.

Luego de los comentarios, la documentación oficial y las verificaciones , 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 segundo argumento.

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

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

Andrew Kolesnikov avatar Oct 25 '2011 19:10 Andrew Kolesnikov

En caso de que Swift Developer venga aquí,

para convertir de NSString/String a NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
Sruit A.Suk avatar Mar 03 '2015 15:03 Sruit A.Suk

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
Shamsiddin Saidov avatar Mar 26 '2016 23:03 Shamsiddin Saidov