Hallo Ich weiß, viele von Ihnen bereits wissen, wie es aber bitte helfen Sie mir getan werden kann, wie ich ein Anfänger zu schnelle Programmierung bin.Was ist der beste Weg, um einen [UInt8] Byte-Array in schnellen 4 zu ändern?
Bitte diesen Code betrachten und mir helfen, mit Änderungen,
// Meine gelesenen Code
let ReceiveData = rxCharacteristic?.value
if let ReceiveData = ReceiveData {
let ReceivedNoOfBytes = ReceiveData.count
myByteArray = [UInt8](repeating: 0, count: ReceivedNoOfBytes)
(ReceiveData as NSData).getBytes(&myByteArray, length: ReceivedNoOfBytes)
print("Data Received ",myByteArray)
}
// Nun, sie in einigen lokalen Variablen, wie ich bin Speichern unter
let b0 = myByteArray[0]
let b0 = myByteArray[1]
let b2 = myByteArray[2]
let b3 = myByteArray[3]
// Jetzt möchte ich einige Daten einfügen, die aus einer Textbox kommenden
var tb1 = textbox1.text
var b1 = tb1.flatMap{UInt8(String($0))}
var tb2 = textbox2.text
var b2 = tb2.flatMap{UInt8(String($0))}
// Jetzt schreibe ich alle Daten, die einen Funktionsblock wie unter
let Transmitdata = NSData(bytes: bytes, length: bytes.count)
peripheral.writeValue(Transmitdata as Data, for: txCharacteristic!, type: CBCharacteristicWriteType.withoutResponse)
print("Data Sent",Transmitdata)
Hier ein neues Byte-Array unter Klassendeklaration zur Zeit der Erstellung und Zuordnung des empfangenen Byte-Array Ich verwenden. Wie unten
class Example:UIViwecontroller{
var storebytes: [UInt8]()
func somefunc(){
storebytes = myByteArray
}
Und dann versuchen, meine Textbox Daten an der Stelle der ersten beiden Positionen in myByteArray Swapping und es dann zu Sendedaten übergeben.
Gibt es eine einfache Möglichkeit, es zu tun? Fügen Sie einfach Bytes an den Stellen ein, die ich brauche, und geben Sie sie an den Sender weiter?
Ich habe versucht, eine Methode wie
bytes.insert(new data,at: index)
aber es gibt mir einen Index außerhalb des Bereichs verwendet wird. Kennt jemand eine bessere Methode, wie man es macht?
hallo Vadian, vielen Dank für Ihre Antwort. Ich bin ein wenig verwirrt Kannst du es in meinem Code wie oben zeigen, wie Sammlungsart durchgeführt werden kann? :) – nar0909
Was soll 'tb1.flatMap {UInt8 (String ($ 0)') tun? – vadian
Hallo danke ich habe es bekommen :) naja textbox.text gibt einen String zurück der sagt "12" aber ich muss es umwandeln zu zwei UInt8 Nummern, wenn ich die obige Flatmap verwende, bekomme ich [1,2] und es ist ein UInt8. Hoffe das hilft – nar0909