web-dev-qa-db-fra.com

Création de NSData à partir de NSString dans Swift

J'essaie en fin de compte d'avoir une NSMutableURLRequest avec une HTTPBody valide, mais je n'arrive pas à obtenir mes données de chaîne (provenant d'une UITextField) dans un objet utilisable NSData.

J'ai vu cette méthode pour aller dans l'autre sens:

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

Mais je n'arrive pas à trouver de documentation pour mon cas d'utilisation. Je suis prêt à mettre la chaîne dans un autre type si nécessaire, mais aucune des options d'initialisation pour NSData à l'aide de Swift ne semble être ce que je recherche.

169
Jackson Egan

Dans Swift 3

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

Dans Swift 2 (ou si vous avez déjà une instance NSString)

let data = string.dataUsingEncoding(NSUTF8StringEncoding)

Dans Swift 1 (ou si vous avez un Swift String):

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

Notez également que data est un Optional<NSData> (étant donné que la conversion peut échouer), vous devrez donc le décompresser avant de l'utiliser, par exemple:

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

Swift 4 & 3

La création d'un objet Data à partir d'un objet String a été modifiée dans Swift 3. La version correcte est la suivante:

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

Voici une méthode très simple

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

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

Pour créer des données non optionnelles, je recommande de les utiliser:

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

Dans Swift 5

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