参数标签错误
问题描述:
获取的参数转换后标签错误斯威夫特:
参数标签“(字节长度:, :)”不匹配任何可用的重载参数标签错误
有效载荷分配:let payload = Data(bytes: bytes, length: length)
if characteristic.uuid.isEqual(CBUUID(string: TRANSFER_CHARACTERISTIC_UUID)) {
print("Writing to characteristic \(characteristic)")
let zpl: String = "^XA^FO50,50^ADN,36,20^FDHELLO WORLD^FS^XZ"
let bytes = zpl.utf8
let length: size_t = (zpl.characters.count ?? 0)
let payload = Data(bytes: bytes, length: length)
print("Writing payload: \(payload) length of \(length)")
//peripheral.writeValue(payload, forCharacteristic: characteristic, type: CBCharacteristicWriteWithResponse)
peripheral.writeValue(payload, for: characteristic, type: CBCharacteristicWriteType)
}
及以下:
textview.text = String(data, encoding: String.Encoding.utf8)
if (stringFromData == "EOM") {
// We have, so show the data,
textview.text = String(data, encoding: String.Encoding.utf8)
// Cancel our subscription to the characteristic
peripheral.setNotifyValue(false, for: characteristic)
// and disconnect from the peripehral
centralManager?.cancelPeripheralConnection(peripheral)
}
建议?
答
如果您查看文档或在Xcode中使用自动完成功能,您会发现该方法的版本为bytes:count:
。也许你想要的东西是这样的:
let zpl: String = "^XA^FO50,50^ADN,36,20^FDHELLO WORLD^FS^XZ"
var bytes = zpl.utf8
let payload = Data(bytes: &bytes, count: zpl.characters.count)
是否有你为什么不使用'zpl.data(使用:.utf8)'将'String'转换为'Data'的原因? – FelixSFD
@FelixSFD =)可能是因为我很新的菲利克斯。我会看看那个。感谢您的建议。向你们学习很多。 – JLanders