我试图最终拥有一个带有有效的HTTPBody
的NSMutableURLRequest
,但我似乎无法将来自UITextField
的字符串数据转换为可用的NSData
对象。
我已经看到了反过来的方法:
NSString(data data: NSData!, encoding encoding: UInt)
但是我似乎找不到适用于我的情况的任何文档。 如果必要,我可以将字符串放入其他类型中,但使用 Swift 的 NSData
初始化选项似乎都不是我要找的。
我试图最终拥有一个带有有效的HTTPBody
的NSMutableURLRequest
,但我似乎无法将来自UITextField
的字符串数据转换为可用的NSData
对象。
我已经看到了反过来的方法:
NSString(data data: NSData!, encoding encoding: UInt)
但是我似乎找不到适用于我的情况的任何文档。 如果必要,我可以将字符串放入其他类型中,但使用 Swift 的 NSData
初始化选项似乎都不是我要找的。
在 Swift 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)
}
在Swift 3中,从String
对象创建Data
对象的方式已经发生了变化。现在正确的版本是:
let data = "any string".data(using: .utf8)
在Swift 5中
let data = Data(YourString.utf8)
Swift 4
let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
NSString
。 - vadian将字符串转换为数据
extension String {
func toData() -> Data {
return Data(self.utf8)
}
}
将数据转换为字符串
extension Data {
func toString() -> String {
return String(decoding: self, as: UTF8.self)
}
}
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let key = "1234567"
let keyData = Data(key.utf8)
// 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)!
Swift 4.2
let data = yourString.data(using: .utf8, allowLossyConversion: true)
Value of optional type 'NSData?' not unwrapped; did you mean to use '!' or '?'?
- UserOptional<NSData>
,在使用之前需要进行解包。 - Gabriele Petronellaif let data =(swiftString as NSString).dataUsingEncoding(NSUTF8StringEncoding){}
一次性处理转换和可选项,这样可能更清晰。 - memmons