【问题标题】:CUnsignedChar has no subscript membersCUnsignedChar 没有下标成员
【发布时间】:2017-07-18 16:59:55
【问题描述】:

我收到错误Type 'CUnsignedChar?' has no subscript members,它在 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;

任何关于正确方向的建议都会很棒。

【问题讨论】:

  • 你为什么在 Swift 中首先使用 char 数组?
  • 有什么替代方案?
  • 只是普通的String。即使在 Objective C 中,除非您正在处理 C API,否则您不应该使用char *,而是使用NSString
  • 是潜力股。我只是坚持使用 obj-c 版本来连接硬件。虽然它正在连接到 C api
  • 即便如此,StringNSString 可以在必要时桥接到 char *。在 Swift 中使用原始 char 数组是完全没有意义的。

标签: objective-c swift subscript


【解决方案1】:

我注意到您的代码只需要稍作改动。你应该让 backGreyBuffer 成为一个指针:

var bBuff1 = [CUnsignedChar](repeating: 0, count: Int(256*512))
var backGreyBuffer = UnsafeMutablePointer(mutating: bBuff1)

// ....

var backGreyBufferOffset = localTexOffset * 512
backGreyBuffer[backGreyBufferOffset] = grey_val

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 2021-06-05
    • 2016-07-08
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多