Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift ';init不可用:使用';带内存绑定(至:容量:#)和#x27;将内存临时视为另一种与布局兼容的类型_Swift_Swift3_Unsafe Pointers - Fatal编程技术网

Swift ';init不可用:使用';带内存绑定(至:容量:#)和#x27;将内存临时视为另一种与布局兼容的类型

Swift ';init不可用:使用';带内存绑定(至:容量:#)和#x27;将内存临时视为另一种与布局兼容的类型,swift,swift3,unsafe-pointers,Swift,Swift3,Unsafe Pointers,由于我将代码转换为Swift 3,因此出现了错误 'init is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type. 这是我的密码: func parseHRMData(data : NSData!) { var flags : UInt8 var count : Int = 1 var zw

由于我将代码转换为Swift 3,因此出现了错误

'init is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type.
这是我的密码:

func parseHRMData(data : NSData!)
{
    var flags : UInt8
    var count : Int = 1
    var zw = [UInt8](count: 2, repeatedValue: 0)

    flags = bytes[0]
    /*----------------FLAGS----------------*/
        //Heart Rate Value Format Bit
        if([flags & 0x01] == [0 & 0x01])
        {
            //Data Format is set to UINT8
            //convert UINT8 to UINT16
            zw[0] = bytes[count]
            zw[1] = 0
            bpm = UnsafePointer<UInt16>(zw).memory

            print("HRMLatitude.parseData Puls(UINT8): \(bpm)BPM")

            //count field index
            count = count + 1
        }
func parseHRMData(数据:NSData!)
{
变量标志:UInt8
变量计数:Int=1
变量zw=[UInt8](计数:2,重复值:0)
标志=字节[0]
/*----------------旗帜----------------*/
//心率值格式位
如果([flags&0x01]==[0&0x01])
{
//数据格式设置为UINT8
//将UINT8转换为UINT16
zw[0]=字节[计数]
zw[1]=0
bpm=未安全指针(zw).内存
打印(“HRMLatitude.parseData Puls(UINT8):\(bpm)bpm”)
//计数字段索引
计数=计数+1
}
如何修复此错误


提前感谢!

zw
是一个
UInt8
数组,用于重新解释指向元素的指针 作为指向
UInt16
的指针的存储,必须使用
和memoryRebound()
在Swift 3中呼叫。在您的情况下:

var zw = [UInt8](repeating: 0, count: 2)
// Alternatively:
var zw: [UInt8] = [0, 0]

// ...

let bpm = UnsafePointer(zw).withMemoryRebound(to: UInt16.self, capacity: 1) {
    $0.pointee
}
另一种解决办法是

let bpm = zw.withUnsafeBytes {
    $0.load(fromByteOffset: 0, as: UInt16.self)
}
寻找
有关原始指针、类型指针和重新绑定的详细信息。

使用问题中定义的zw var无效。它给了我一个“调用中的参数标签不正确”错误。看起来API在Swift 3中发生了更改。…
var zw=[UInt8](重复:0,计数:2)
如果可以编辑答案,我将向上投票(否则它不会让我)