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




objective-c (7)

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)

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)

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

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

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




nsdata