我有一个存储在数据类型中的值。打印时:
debugPrint("/(batteryLevel as NSData)"
我得到以下信息:<05>
我想用这个结果创建一个开关。
`let testBatteryStatus:NSData = BluejayManager.shared.batteryStatus as! NSData
switch testBatteryStatus {
case <05> : print("print")
default: print("nope")
}`
但是它抛出一个错误。 “<”无效。 因此,当值为 <05> 时,它正在充电,当 <04> 为临界值时,等等。任何指导都会被应用。 提前致谢。
最佳答案
在 Swift 的 switch 语句中,您可以使用字符串、整数、元组,也可以做一些整洁的事情,比如值绑定(bind)和使用 where 语句。据我所知,没有像您尝试使用 <05>
编写的文字 NSData 类型.这就是引发错误的原因。
此外,您还打印了 NSData。这会将 NSData“字符串化”为可打印格式,这就是为什么您认为可以在 switch 语句中对此进行匹配。
我的建议是将 NSData 转换为 String 或 Int(您的情况似乎更适合 Int),然后进行匹配。
例如
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!")
}
关于ios - 使用 NSData 或 Data Swift 3 切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46771602/