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:
Según lo documentado por dataUsingEncoding: :
Valor de retorno
El resultado de invocar
dataUsingEncoding:allowLossyConversion:
con NO como el segundo argumentoSegú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];