我有一个Float数组(即[Float]),我需要从Swift调用一个期望Spark::swap('UpdateTeamMember', 'App\Swap\UpdateTeamMember');
的C函数。什么是正确的转换方式?
答案 0 :(得分:1)
快捷键4:
如果您要 复制 您的“浮动”数组 到 一个 新分配的内存 使用以下代码:
// A float array
let floats : [Float] = [/* ... */]
// Allocating sufficient space to store or data
let pointerToFloats = UnsafeMutablePointer<Float>.allocate(capacity: floats.count)
// Copying our data into the freshly allocated memory
pointerToFloats.assign(from: floats, count: floats.count)
// Here you can use your pointer and pass it to any function
pointerWork(pointerToFloats)
但是,如果您要 使用 与当前阵列相同的内存 ,请使用以下行:
let pointerToFloats = UnsafeMutablePointer<Float>.init(mutating: floats)
这里您不必将数据分配到内存,因为 指针引用您的float数组的相同连续内存
答案 1 :(得分:0)
当我尝试进行相同的转换时,我使用了以下代码:
event.preventDefault()
我不确定这是最好的方法,但它对我有用
答案 2 :(得分:0)
buffer.contents().assumingMemoryBound(to: Float.self)
这里缓冲区是您分配的内存。 contents()
返回此内存的指针,然后assumingMemoryBound
对该类型的内存块进行类型转换。