无法推断数组 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]
这是简单的代码:
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]