私は最終的に有効なNSMutableURLRequest
を持つHTTPBody
を持とうとしていますが、(UITextField
から来る)文字列データを使用可能なNSData
オブジェクトにすることはできません。
私は他の方法をとるためにこの方法を見ました:
NSString(data data: NSData!, encoding encoding: UInt)
しかし、私は私のユースケースのためのドキュメントを見つけることができないようです。私は必要に応じて他の型に文字列を入れることに寛容ですが、Swiftを使ったNSData
の初期化オプションはどれも私が探しているものとは思えません。
スウィフト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)
また、data
はOptional<NSData>
であることに注意してください(変換が失敗する可能性があるため)。使用する前に展開する必要があります。次に例を示します。
if let d = data {
println(d)
}
Data
オブジェクトからString
オブジェクトを作成することはSwift 3で変更されました。正しいバージョンは現在:
let data = "any string".data(using: .utf8)
ここではとても簡単な方法
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
// 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)!
オプションではないデータを作成するには、それを使用することをお勧めします。
let key = "1234567"
let keyData = Data(key.utf8)
Swift 4
let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
Swift 4.2
let data = yourString.data(using: .utf8, allowLossyConversion: true)
Swift 5では
let data = Data(YourString.utf8)