无法推断数组 Xcode 12 和 Swift 5 中的错误

Array cannot be inferred Error in Xcode 12 with Swift 5

这是简单的代码:

var buffer = [UInt8](_data)
var sec_ivs = [UInt8](repeating: 0, count: 8);
memcpy(&sec_ivs + 3, &buffer, 5);

Xcode 停止构建项目并出现以下错误:

如何重写此代码以使其在 Xcode 12 中再次运行?此代码在Xcode 11 中运行良好,但Xcode 11 不支持iOS 14 debuging.Thanks 寻求帮助。

您可以使用

将数组的(可变)元素存储地址传递给 C 函数
memcpy(&sec_ivs, buffer, 5)

但这不适用于偏移量。这里需要使用withUnsafeMutableBytes()获取一个buffer指针,这样就可以加上偏移量:

sec_ivs.withUnsafeMutableBytes {
    memcpy([=11=].baseAddress! + 3, buffer, 5);
}

请注意,memcpy() 的第二个参数不需要 & 运算符,因为它是一个 常量 指针参数。

一个更简单的解决方案是对目标数组的一部分进行赋值:

sec_ivs[3..<8] = buffer[0..<5]