wake-up-neo.com

NSData aus NSString in Swift erstellen

Ich versuche letztendlich eine NSMutableURLRequest mit einer gültigen HTTPBody, aber ich scheine meine String-Daten (die von einer UITextField stammen) nicht in ein verwendbares NSData-Objekt zu bekommen.

Ich habe diese Methode gesehen, um den anderen Weg zu gehen:

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

Ich kann jedoch keine Dokumentation für meinen Anwendungsfall finden. Ich bin gerne bereit, den String bei Bedarf in einen anderen Typ zu schreiben, aber keine der Initialisierungsoptionen für NSData mit Swift scheint das zu sein, was ich suche.

169
Jackson Egan

In Swift 3

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

In Swift 2 (oder wenn Sie bereits eine NSString-Instanz haben)

let data = string.dataUsingEncoding(NSUTF8StringEncoding)

In Swift 1 (oder wenn Sie eine Swift String haben):

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

Beachten Sie auch, dass data ein Optional<NSData> ist (da die Konvertierung möglicherweise fehlschlägt). Daher müssen Sie ihn vor der Verwendung auspacken, z. B .:

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

Swift 4 & 3

Das Erstellen eines Data-Objekts aus einem String-Objekt wurde in Swift 3 geändert. Die korrekte Version lautet jetzt:

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

Hier sehr einfache Methode

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

Um nicht optionale Daten zu erstellen, empfehle ich die Verwendung dieser Daten:

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

In Swift 5

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