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中使用原始字符数组是完全没有意义的。