2017-10-16 3 views
0

Ich habe einen Wert in einem Datentyp gespeichert. Beim Drucken mit:
debugPrint("/(batteryLevel as NSData)" bekomme ich Folgendes: <05> Ich möchte einen Schalter mit diesem Ergebnis erstellen.
Switch mit NSData oder Data Swift 3

`let testBatteryStatus:NSData = BluejayManager.shared.batteryStatus as! NSData 
       switch testBatteryStatus { 
       case <05> : print("print") 
       default: print("nope") 
       }` 

aber es trows ein Fehler auf. "<" ist nicht gültig. Also, wenn der Wert < 05> es wird geladen, wenn < 04> kritisch, ect. Jede Anleitung würde geschätzt werden. Vielen Dank im Voraus.

Antwort

1

In switch-Anweisungen in Swift können Sie Strings, Ints, Tuples verwenden, aber auch nette Dinge wie Wertbindungen und where-Anweisungen verwenden. AFAIK, gibt es keinen literalen NSData-Typ wie Sie versucht haben, mit <05> zu schreiben. Das ist es, was den Fehler verursacht.

Sie haben auch die NSData gedruckt. Dies "schreibt" die NSData in ein druckbares Format, weshalb Sie meinen, dass Sie in der switch-Anweisung darauf passen können.

Mein Vorschlag ist, die NSData in einen String oder einen Int zu konvertieren (Ihr Fall scheint für einen Int besser geeignet zu sein), und passen Sie darauf an.

z.B.

var batteryInt: Int = 0 
let batteryData:NSData = BluejayManager.shared.batteryStatus as! NSData 
batteryData.getBytes(&batteryInt, length: MemoryLayout<Int>.size) 
switch batteryInt { 
    case 5 : print("yes!") 
    default: print("nope!") 
}