objective c - Come posso convertire un valore NSString in NSData?




objective-c (7)

Come posso convertire un valore NSString in NSData ?


Fare:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

quindi sentiti libero di procedere con NSJSONSerialization:JSONObjectWithData .

Correzione della risposta relativa al terminatore NULL

Seguendo i commenti, la documentazione ufficiale e le verifications , questa risposta è stata aggiornata per quanto riguarda la rimozione di un presunto terminatore NULL:

  1. Come documentato da dataUsingEncoding: ::

    Valore di ritorno

    Il risultato del dataUsingEncoding:allowLossyConversion: di dataUsingEncoding:allowLossyConversion: con NO come secondo argomento

  2. Come documentato da getCString:maxLength:encoding: e cStringUsingEncoding: ::

    si noti che i dati restituiti da dataUsingEncoding:allowLossyConversion: non è una stringa C rigorosa poiché non ha un terminatore NULL


Nel caso in cui lo sviluppatore Swift venga qui,

per convertire da NSString / String a NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)

Per Swift 3, per lo più si converte da String a Data .

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

Prima di tutto, dovresti usare dataUsingEncoding: invece di passare attraverso UTF8String . UTF8String solo quando hai bisogno di una stringa C in quella codifica.

Quindi, per UTF-16 , passa NSUnicodeStringEncoding anziché NSUTF8StringEncoding nel tuo dato 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];






nsdata