Создание NSData из NSString в Swift
Я пытаюсь в конечном итоге иметь NSMutableURLRequest
с допустимым HTTPBody
, но я не могу представить свои строковые данные (исходящие из UITextField
) в полезный NSData
объект.
Я видел этот метод для перехода по другому пути:
NSString(data data: NSData!, encoding encoding: UInt)
Но я не могу найти какую-либо документацию для моего варианта использования. Я открыт для ввода строки в какой-то другой тип, если это необходимо, но ни один из параметров инициализации для NSData
с использованием Swift, похоже, не является тем, что я ищу.
Ответы
Ответ 1
В 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)
Также обратите внимание, что data
является Optional<NSData>
(поскольку преобразование может завершиться с ошибкой), поэтому вам необходимо развернуть его перед его использованием, например:
if let d = data {
println(d)
}
Ответ 2
Swift 4 и 3
Создание объекта Data
из объекта String
изменено в Swift 3. Теперь исправлена версия:
let data = "any string".data(using: .utf8)
Ответ 3
Здесь очень простой метод
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
Ответ 4
// Checking the format
var urlString: NSString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)
// Convert your data and set your request HTTPBody property
var stringData: NSString = NSString(string: "jsonRequest=\(urlString)")
var requestBodyData: NSData = stringData.dataUsingEncoding(NSUTF8StringEncoding)!
Ответ 5
Swift 4
let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
Ответ 6
Для создания необязательных данных я рекомендую использовать их:
let key = "1234567"
let keyData = Data(key.utf8)
Ответ 7
Swift 4.2
let data = yourString.data(using: .utf8, allowLossyConversion: true)
Ответ 8
Свифт 5
let data = Data(YourString.utf8)