繁体   English   中英

使用NSData或Data Swift 3进行切换

[英]Switch with NSData or Data Swift 3

我有一个存储在数据类型中的值。 打印时:
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语句中,您可以使用Strings,Ints,Tuples,还可以进行诸如值绑定之类的整洁事情,并使用where语句。 AFAIK,没有像您尝试使用<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!")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM