我正在尝试读取Peripheral发送的数组数据,并将其解析为Swift数组形式。
外围设备正在发送数据,例如:Array [1至15]数字。(出于全面的目的,此整数值的范围在1000到2000之间)。但是现在我正在尝试使其使用1到15个Integer值。 我能够以编码格式的字符串格式获取结果。我的问题是如何快速从didUpdateValueFor方法的Characteristic.value获取数组1到15。
这是代码段供参考。
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
let data = characteristic.value
print("Count: \(count), data: \(data! as NSData)")
}
}
在X代码控制台中,打印结果为:
计数:2,数据:<00000100 02>
计数:3,数据:<00030004 00050006 00070008 0009000a 000b000c>
计数:4,数据:<000d00>
计数:5,数据:<0e000f00>
答案 0 :(得分:0)
使用以下代码以Int
的形式检索array
值。
不要忘记为数据请求重设count = 0
和values.removeAll()
。
我假设您的characteristics.value
是Int
值
var values:[Int] = []
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if characteristic == rxCharacteristic {
count += 1
if let data = characteristic.value {
var num = 0
//Convert Data to Int
data.getBytes(&num, length: MemoryLayout<Int>.size)
values.append(num)
}
print("Count: \(count), data: \(data! as NSData)")
}
}