Невозможно преобразовать значение типа «String» в ожидаемый тип аргумента «Данные» при использовании функции peripheral.writeValue [duplicate]

Документация говорит, что это просто ярлык для создания свойств readonly. Таким образом,

@property
def x(self):
    return self._x

эквивалентно

def getx(self):
    return self._x
x = property(getx)

157
задан Sneagan 4 June 2014 в 15:14
поделиться

5 ответов

В 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)
}
329
ответ дан Gabriele Petronella 22 August 2018 в 10:52
поделиться
  • 1
    Да, это работает :) просто попробовал :) – Fogmeister 4 June 2014 в 15:18
  • 2
    Swift может определить тип NSData? – Nicolas Manzini 4 June 2014 в 15:18
  • 3
    @macdonjo yep, этот API изменился с течением времени, и теперь он возвращает Optional<NSData>, который необходимо развернуть перед использованием – Gabriele Petronella 21 September 2014 в 17:57
  • 4
    В Swift2 нет необходимости использовать & quot; как & quot; литье, поскольку оно автоматически перекрывается – Jacky 18 June 2015 в 01:51
  • 5
    Преобразование в UTF-8 не может сбой, поэтому необязательная привязка не нужна, вы можете принудительно развернуть здесь. – Martin R 25 August 2016 в 06:52

Swift 4 & amp; 3

Создание объекта Data из объекта String было изменено в Swift 3. Правильная версия теперь:

let data = "any string".data(using: .utf8)
27
ответ дан Said Sikira 22 August 2018 в 10:52
поделиться
  • 1
    Благодарю. Это отлично работало для меня в быстрой 3. пусть input = "тестовая строка" let xdata = input.data (используя: String.Encoding.utf8) – raddevus 2 October 2016 в 15:59
  • 2
    Любая идея, почему String (data: data !, encoding: .nonLossyASCII) будет nil? – Happiehappie 13 October 2016 в 06:53

Здесь очень простой метод

let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
4
ответ дан Shafraz Buhary 22 August 2018 в 10:52
поделиться

Swift 4

let data = myStringVariable.data(using: String.Encoding.utf8.rawValue)
0
ответ дан TheTiger 22 August 2018 в 10:52
поделиться
// 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 22 August 2018 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: