【问题标题】: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,没有像您尝试使用&lt;05&gt; 编写的文字 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!")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多