web-dev-qa-db-fra.com

Comment convertir une valeur NSString en NSData?

Comment convertir une valeur NSString en NSData?

906
anish
NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
1409
flitzwald
NSString *str = @"helowrld";
// This converts the string to an NSData object
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

vous pouvez prendre référence à partir de ceci lien

65
ALOK KUMAR

Faire:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

alors n'hésitez pas à procéder avec NSJSONSerialization:JSONObjectWithData.


Correction à la réponse concernant le terminateur NULL

Suite aux commentaires, à la documentation officielle et à vérifications , cette réponse a été mise à jour en ce qui concerne la suppression d'un supposé terminateur NULL:

  1. Comme documenté par dataUsingEncoding: :

    Valeur de retour

    Résultat de l'invocation de dataUsingEncoding:allowLossyConversion: avec NO comme second argument

  2. Comme documenté par getCString: maxLength: encoding: et cStringUsingEncoding: :

    notez que les données renvoyées par dataUsingEncoding:allowLossyConversion: ne constituent pas une chaîne C stricte, car elles ne comportent pas de terminateur NULL

32
Andrew Kolesnikov

En cas de Swift développeur venant ici,

convertir de NSString/String en NSData

var _nsdata = _nsstring.dataUsingEncoding(NSUTF8StringEncoding)
20
Sruit A.Suk

Objective-C:

NSString *str = @"test string";
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:str];
NSString *thatStr = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Swift:

let str = "test string"
let data = NSKeyedArchiver.archivedData(withRootObject: str)
let thatStr = NSKeyedUnarchiver.unarchiveObject(with: data) as! String
17
Shamsiddin

Tout d’abord, vous devez utiliser dataUsingEncoding: au lieu de passer par UTF8String. Vous utilisez uniquement UTF8String lorsque vous avez besoin d'une chaîne C dans cet encodage.

Ensuite, pour UTF-16, passez simplement NSUnicodeStringEncoding à la place de NSUTF8StringEncoding dans votre message dataUsingEncoding:.

10
Jerry Thomsan

Pour Swift 3, vous effectuerez principalement la conversion de String en Data.

let myString = "test"
let myData = myString.data(using: .utf8)
print(myData) // Optional(Data)
7
jacks205
NSString *str = @"hello";
NSData *data = [NSData dataWithBytes:str.UTF8String length:str.length];
6
Nex Mishra

Objective-C:

NSString to NSData:

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

NSData to NSString:

NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];

Swift:

Chaîne de données:

var testString = "string"
var somedata = testString.data(using: String.Encoding.utf8)

Données en chaîne:

var backToString = String(data: somedata!, encoding: String.Encoding.utf8) as String!
2
Nick
NSString *str = @"Banana";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:true];
1
Kamani Jasmin

Objectif c

NSString *str = @"Hello World";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];

Swift

let str = "Hello World"
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)
0
Rohit Makwana