Ich habe eine eingehende Zeichenfolge von Bluetooth, die in Blöcken kommt, am Ende wie folgt aussehen:finden Zeichen in einer Zeichenfolge falsche Ergebnisse liefert
sentData1;
Ich möchte nur, es drucken, wenn ich die ;
an die finden Ende, so:
if let str = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
{
//data comes in chunks
if (str.range(of: ";") == nil){dataIn+=str; return} //stop if not ;
print("BLE:DATAIN:",dataIn) //final
dataIn=""
}
Es wird immer gedruckt: BLE:DATAIN: sent
. Ich habe überprüft, dass die eingehenden Daten ist wie erwartet, der einzige Weg, es wird nicht halbieren Wort ist, wenn ich das Zeichen zu ändern, nach @
oder etwas anderes suchen, dann wird es das ganze Wort sammeln und nicht zu stoppen unter sent
.
Versucht auch mit NSNotfound
.
Sind dieser Code innerhalb irgendeiner Schleife? –
Danke, nein, es ist in einer Delegate-Funktion, die jedes Mal aufgerufen wird, wenn Sie Bluetooth-Daten eingeben, und Sie erhalten sie in Brocken von Buchstaben. – Curnelious
Side-note: Sie können langatmig 'String.Encoding (rawValue: String.Encoding.utf8.rawValue)' mit '.utf8' ersetzen (kein Scherz) – vadian