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.
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)
}
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)
Voici une méthode très simple
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)!
Swift 4
let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
Swift 4.2
let data = yourString.data(using: .utf8, allowLossyConversion: true)
Pour créer des données non optionnelles, je recommande de les utiliser:
let key = "1234567"
let keyData = Data(key.utf8)
Dans Swift 5
let data = Data(YourString.utf8)