使用未解决的标识符“ sizeof”

时间:2018-07-21 16:34:37

标签: swift sprite-kit nsdata

我正在尝试在两个设备之间发送位置,因此我需要将该位置转换为NSData。我在网上发现了一些东西,但出现错误:使用未解析的标识符'sizeof'。我不知道该怎么解决,您能帮我吗?这是我的代码:

var error: Error?
    var positionToSend = car.position
    let dataSend = NSData(bytes: &positionToSend, length: sizeof(CGPoint))
    try? match.sendData(toAllPlayers: dataSend, with: .unreliable)
    if error != nil {
    }

2 个答案:

答案 0 :(得分:1)

首先error变量是没有意义的。 try?根本不影响error

sizeof已更改为MemoryLayout.size(ofValue:。参数是positionToSend,而不是类型CGPoint

Data创建NSData(不是CGPoint)的Swift 3+方法是

let dataSend = Data(bytes: &positionToSend, count: MemoryLayout.size(ofValue: positionToSend))

答案 1 :(得分:0)

我会在Swift 4中将您的代码重写为:

var positionToSend = car.position
let dataSend = Data(bytes: &positionToSend, count: MemoryLayout.size(ofValue: positionToSend))
do {
    try match.sendData(toAllPlayers: dataSend, with: .unreliable)
} catch {
    //Write code for `if error != nil`...
    print(error)
}

您不需要withUnsafePointer