Swift - 从ConstUnsafePointer <()>转换

Jam*_*s J 5 ios swift

我正处于测试阶段3.考虑以下Objective-C行:

const uint8_t *reportData = [data bytes];
Run Code Online (Sandbox Code Playgroud)

在哪里data是一个NSData对象.

如何在Swift中重写这一行?

data.bytes是类型的ConstUnsafePointer<()>,虽然有很多关于如何在Swift中创建指针类型的文档,但是没有太多关于如何使用它们的信息.

编辑: 要添加一些上下文,我正在尝试将Apple的HeartRateMonitor示例代码移植到Swift.此代码与BLE心率监测器交互.我正在编写的这段代码将蓝牙系统收到的数据转换为int,以便在UI中使用.从BT接收的数据预计是一个uint数组,元素0用于检查标志,元素1包含该值.

这是上下文中相同的Objective-C行:

const uint8_t *reportData = [data bytes];
uint16_t bpm = 0;

if ((reportData[0] & 0x01) == 0) 
{
    /* uint8 bpm */
    bpm = reportData[1];
} 
Run Code Online (Sandbox Code Playgroud)

dan*_*gai 6

你在寻找的是如何将NSData转换为UInt8数组.这是如何做.

import Foundation
let path = "/etc/csh.cshrc" // something existent
let data = NSData(contentsOfFile: path)

var aofb = [UInt8](count:data.length, repeatedValue:0)
data.getBytes(&aofb, length:data.length)

for c in aofb {
    let s = UnicodeScalar(Int(c)).escape(asASCII:true)
    println("\(c):\(s)")
}
Run Code Online (Sandbox Code Playgroud)