在Swift中从NSString创建NSData

时间:2014-06-04 14:14:24

标签: xcode nsstring nsdata swift nsmutableurlrequest

我试图最终拥有一个有效NSMutableURLRequest的{​​{1}},但我似乎无法获取我的字符串数据(来自HTTPBody)到一个可用的UITextField对象。

我已经看到了这种方法的另一种方式:

NSData

但我似乎无法为我的用例找到任何文档。如果有必要,我可以将字符串放入其他类型,但使用Swift的NSString(data data: NSData!, encoding encoding: UInt) 的初始化选项似乎都不是我想要的。

9 个答案:

答案 0 :(得分:348)

在Swift 3中

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

在Swift 2中(或者如果你已经有NSString个实例)

let data = string.dataUsingEncoding(NSUTF8StringEncoding)

在Swift 1中(或者如果你有一个快速的String):

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

另请注意,dataOptional<NSData>(因为转换可能会失败),因此您需要在使用之前将其解包,例如:

if let d = data {
    println(d)
}

答案 1 :(得分:31)

Swift 4&amp; 3

在Swift 3中更改了从Data对象创建String对象。现在正确的版本是:

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

答案 2 :(得分:4)

这里非常简单的方法

let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

答案 3 :(得分:3)

// 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)!

答案 4 :(得分:2)

Swift 4

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

答案 5 :(得分:2)

要创建非可选数据,我建议使用它:

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

答案 6 :(得分:1)

Swift 4.2

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

答案 7 :(得分:1)

快速5

a3

答案 8 :(得分:0)

将字符串转换为数据

extension String {
    func toData() -> Data {
        return Data(self.utf8)
    }
}

将数据转换为字符串

extension Data {
      func toString() -> String {
          return String(decoding: self, as: UTF8.self)
      }
   }