objective-c - swift convert text to int
Como faço para converter um valor NSString para NSData? (7)
Como faço para converter um valor NSString
para NSData
?
Faz:
NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
então sinta-se à vontade para continuar com NSJSONSerialization:JSONObjectWithData
.
Correção para a resposta sobre o terminador NULL
Após os comentários, documentação oficial e verifications , esta resposta foi atualizada com relação à remoção de um suposto terminador NULL:
Conforme documentado por dataUsingEncoding: ::
Valor de retorno
O resultado da invocação de
dataUsingEncoding:allowLossyConversion:
com NO como o segundo argumentoConforme documentado por getCString:maxLength:encoding: e cStringUsingEncoding: ::
note que os dados retornados por
dataUsingEncoding:allowLossyConversion:
não é uma string C estrita, pois não possui um terminador NULL
No caso do Swift Developer vir aqui,
converter de NSString / String para NSData
var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
Para o Swift 3, você estará convertendo principalmente de String
para Data
.
let myString = "test"
let myData = myString.data(using: .utf8)
print(myData) // Optional(Data)
Primeiramente, você deve usar dataUsingEncoding:
vez de passar por UTF8String
. Você só usa UTF8String
quando precisa de uma string C
nessa codificação.
Então, para UTF-16
, apenas passe NSUnicodeStringEncoding
vez de NSUTF8StringEncoding
em sua dataUsingEncoding:
message.
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];