我正在尝试在两个设备之间发送位置,因此我需要将该位置转换为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 {
}
答案 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
。