Ich habe eine Frage. Ich versuche, mich mit der Mi-Band zu verbinden. Habe diesen Code auf GitHub gefunden und es funktioniert gut. Allerdings verstehe ich nicht, was mit der Datentypkonvertierung passiert.Auf Swift für Mac, Datentyp Konvertierung für BLE
var u16 = UnsafePointer<Int32>(characteristic.value!.bytes).memory
, die von diesem Code-Block kommt:
func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {
output("Data for "+characteristic.UUID.UUIDString, data: characteristic.value!)
if(characteristic.UUID.UUIDString == "FF06") {
spinnerView.hidden = true
let u16 = UnsafePointer<Int>(characteristic.value!.bytes).memory
stepsView.stringValue = ("\(u16) steps")
} else if(characteristic.UUID.UUIDString == "FF0C") {
spinnerView.hidden = true
var u16 = UnsafePointer<Int32>(characteristic.value!.bytes).memory
u16 = u16 & 0xff
batteryView.stringValue = ("\(u16) % charged")
}
}
Kann es mir jemand erklären? Vielen Dank!
Es ist ein Weg (oder eine neue Art und Weise in der letzten Version von Swift, ich weiß nicht) NSData auf andere Werte (in unserem Fall zu konvertieren, sind sie 'int' oder' Int32 '). Vorher war es mit 'getBytes: length:'. – Larme
@Larme Vielen Dank für Ihre Antwort. Warum wird in diesem Fall "UnsafePointer" verwendet? – vevek
http://stackoverflow.com/questions/26045762/how-does-nsdatabyteslength-convert-byte-to-unsafefointervoid-in-swift? – Larme