Objective c CUnsignedChar没有下标成员
我发现错误Objective c CUnsignedChar没有下标成员,objective-c,swift,subscript,Objective C,Swift,Subscript,我发现错误类型“CUnsignedChar?”没有下标成员,这会在stackoverflow中产生大量结果,但我似乎无法将任何其他可用答案用于我的示例。这显然是一个铸造问题,但我不知道如何克服它 我正在进行obj-c到swift的转换,我有一个变量设置如下 var bBuff1 = [CUnsignedChar](repeating: 0, count: Int(256*512)) var backGreyBuffer : CUnsignedChar = bBuff1[0] //.. //..
类型“CUnsignedChar?”没有下标成员
,这会在stackoverflow中产生大量结果,但我似乎无法将任何其他可用答案用于我的示例。这显然是一个铸造问题,但我不知道如何克服它
我正在进行obj-c到swift的转换,我有一个变量设置如下
var bBuff1 = [CUnsignedChar](repeating: 0, count: Int(256*512))
var backGreyBuffer : CUnsignedChar = bBuff1[0]
//..
//..
var backGreyBufferOffset : Int = localTexOffset * 512
var grey_val = 0
self.backGreyBuffer[Int(backGreyBufferOffset)]! = grey_val; //Subscript error here
这是使用输入输出的obj-c代码
unsigned char bBuff1[256*512];
unsigned char *backGreyBuffer = &bBuff1[0];
//..
grey_val = 0;
backGreyBuffer[backGreyBufferOffset] = grey_val;
任何关于正确方向的建议都是非常好的。我注意到您的代码只需要一点小的更改。您应该将backGreyBuffer设置为指针:
var bBuff1 = [CUnsignedChar](repeating: 0, count: Int(256*512))
var backGreyBuffer = UnsafeMutablePointer(mutating: bBuff1)
// ....
var backGreyBufferOffset = localTexOffset * 512
backGreyBuffer[backGreyBufferOffset] = grey_val
首先,为什么要在Swift中使用字符数组?有什么替代方法?只需常规
String
。即使在Objective C中,除非您处理的是C API,否则也不应该使用char*
,而应该使用NSString
来代替潜在的。我只是坚持obj-c版本实现的硬件连接。尽管它仍然连接到APIC,String
和NSString
可以在必要时桥接到char*
。在Swift中使用原始字符数组是完全没有意义的。