2017-04-13 25 views
0

获取的参数转换后标签错误斯威夫特:
参数标签“(字节长度:, :)”不匹配任何可用的重载参数标签错误

有效载荷分配:
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) 
    } 

建议?

+2

是否有你为什么不使用'zpl.data(使用:.utf8)'将'String'转换为'Data'的原因? – FelixSFD

+1

@FelixSFD =)可能是因为我很新的菲利克斯。我会看看那个。感谢您的建议。向你们学习很多。 – JLanders

回答

0

如果您查看文档或在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) 
+1

它编译...但尝试用一些字符串,然后'打印(有效载荷为NSData)' - 你会感到惊讶。 –

+0

是的,就是这样!每次当我转换某些东西时,从“长度”到“数量”的改变都会让我感受到!谢谢 – JLanders

+0

Phillip。关于'textview.text = String(data,encoding:String.Encoding.utf8)'的任何建议' – JLanders