【问题标题】:Switch with NSData or Data Swift 3使用 NSData 或 Data Swift 3 切换
【发布时间】:2017-10-16 13:31:32
【问题描述】:
我有一个存储在数据类型中的值。打印时:
debugPrint("/(batteryLevel as NSData)" 我得到以下信息:<05> 我想用这个结果创建一个开关。
`let testBatteryStatus:NSData = BluejayManager.shared.batteryStatus as! NSData
switch testBatteryStatus {
case <05> : print("print")
default: print("nope")
}`
但它会引发错误。 “ 时,它正在充电,当 临界时,等等。任何指导都会被应用。
提前致谢。
【问题讨论】:
标签:
ios
swift
switch-statement
byte
【解决方案1】:
在 Swift 的 switch 语句中,您可以使用字符串、整数、元组,也可以做一些简洁的事情,例如值绑定和使用 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!")
}