Swift:不能下标类型' [UInt32]'索引类型' UInt32'

时间:2015-08-24 02:15:12

标签: swift xcode7

这是swift的代码片段:

var color_info: [UInt32] = []
var r = 0xff
var g = 0xff
var b = 0xff

r = r & 0xf0
g = g & 0xf0
b = b & 0xf0

var index_array =  UInt32(r) | (UInt32(g) << 8) | (UInt32(b) << 16)
color_info[index_array]++

为什么我无法使用变量index_array访问数组?帮助赞赏。

1 个答案:

答案 0 :(得分:1)

索引必须为Int。编译完成后,您的代码很可能会崩溃,因为您有一个空数组并尝试访问不存在的第n个元素。

你可以像这样预先初始化:

var color_info = Array(count: 100, repeatedValue: UInt32(0))

看起来你需要相当大的数组。也许有一种方法可以通过不同的算法和更少的内存来实现您的目标?使用字典可能是一个选项(key = rgb,value = count),它只占用图像中实际存在的颜色而不是数组。我怀疑对于大型图像来说这会很慢......但是......