ios - 使用 NSData 或 Data Swift 3 切换

标签 ios swift switch-statement byte

我有一个存储在数据类型中的值。打印时:
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/

相关文章:

ios - 无需下载的远程图像大小

ios - 方法 'application:openURL:options:'未被调用

ios - 表中的 NSFetchedResultsController 和 scrollToBottom

swift - Assets 单例和引用循环

java - java中switch中变量的作用域

ios - 基本开关错误

ios - 在 Swift 中将字典复制到数组中

ios - 使用 RxSwift 刷新后绑定(bind)到 UIRefreshControl

ios - UITableView 没有名为 count 的成员

java - 嵌套 if/else、开关或更有效的 RPG 战斗?