web-dev-qa-db-ja.com

NSString値をNSDataに変換する方法を教えてください。

NSString値をNSDataに変換する方法

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

このリンクから参照できます link

65
ALOK KUMAR

行う:

NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

それからNSJSONSerialization:JSONObjectWithDataに進んでください。


NULLターミネータに関する回答の訂正

コメント、公式ドキュメント、および 検証 に従って、この回答はNULLターミネータの疑いのある削除について更新されました。

  1. dataUsingEncodingで文書化されているとおり:

    戻り値

    2番目の引数としてNOを指定してdataUsingEncoding:allowLossyConversion:を呼び出した結果

  2. getCString:maxLength:encoding: および cStringUsingEncoding: :で文書化されています。

    dataUsingEncoding:allowLossyConversion:によって返されるデータはNULLターミネータを持たないなので、厳密なC文字列ではありません。

32

Swift Developerがここに来た場合は、

nSString/Stringから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];

スイフト:

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

まず、dataUsingEncoding:を通らずにUTF8Stringを使うべきです。そのエンコーディングでC文字列が必要な場合にのみUTF8Stringを使用します。

次に、UTF-16には、NSUTF8StringEncodingメッセージにdataUsingEncoding:の代わりにNSUnicodeStringEncodingを渡します。

10
Jerry Thomsan

Swift 3では、ほとんどがStringからDataに変換されます。

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

Objective-C:

NSStringからNSDataへ:

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

NSDataからNSStringへ:

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

スイフト:

データへの文字列:

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

文字列へのデータ:

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

Objective-C

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

迅速

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