web-dev-qa-db-ja.com

SwiftでNSStringからNSDataを作成する

私は最終的に有効なNSMutableURLRequestを持つHTTPBodyを持とうとしていますが、(UITextFieldから来る)文字列データを使用可能なNSDataオブジェクトにすることはできません。

私は他の方法をとるためにこの方法を見ました:

NSString(data data: NSData!, encoding encoding: UInt)

しかし、私は私のユースケースのためのドキュメントを見つけることができないようです。私は必要に応じて他の型に文字列を入れることに寛容ですが、Swiftを使ったNSDataの初期化オプションはどれも私が探しているものとは思えません。

171
Jackson Egan

スウィフト3

let data = string.data(using: .utf8)

Swift 2では(または既にNSStringインスタンスをお持ちの場合)

let data = string.dataUsingEncoding(NSUTF8StringEncoding)

Swift 1では(またはSwift Stringを持っているなら):

let data = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)

また、dataOptional<NSData>であることに注意してください(変換が失敗する可能性があるため)。使用する前に展開する必要があります。次に例を示します。

if let d = data {
    println(d)
}
349

スイフト4&3

DataオブジェクトからStringオブジェクトを作成することはSwift 3で変更されました。正しいバージョンは現在:

let data = "any string".data(using: .utf8)
31
Said Sikira

ここではとても簡単な方法

let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
4
Shafraz Buhary
// Checking the format
var urlString: NSString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)

// Convert your data and set your request's HTTPBody property
var stringData: NSString = NSString(string: "jsonRequest=\(urlString)")

var requestBodyData: NSData = stringData.dataUsingEncoding(NSUTF8StringEncoding)!
3
Vinod Joshi

オプションではないデータを作成するには、それを使用することをお勧めします。

let key = "1234567"
let keyData = Data(key.utf8)
2
Ramis

Swift 4

let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
2
jatin

Swift 4.2

let data = yourString.data(using: .utf8, allowLossyConversion: true)
1
meMadhav

Swift 5では

let data = Data(YourString.utf8)
1
Sanjay Mishra