极端新手 Swift 语法问题...
尝试寻址 UIImageView 对象的多维数组并收到错误
我无法下标索引为 键入 UInt32。
以为我正在创建一个 UIImageView 对象的 NxN 数组,但我想不是吗?
谢谢大家!
func loadDefaultImages()
{
var pictures : [[UIImageView]] = [];
let MaxRows: UInt32 = 4
let MaxCols: UInt32 = 4
var row: UInt32
var col: UInt32
for (row = 0; row <= MaxRows; row++)
{
for (col = 0; col <= MaxCols; col++)
{
var newImage = UIImageView(image: UIImage(named: "first"))
pictures[row][col] = UIImageView() /* Error on this statement */
}
}
}
最初,你的pictures
数组将不包含任何元素,(即它将计算为[]
)。当您尝试设置 pictures[0][0]
时,您正在尝试引用尚不存在的行和列。
相反,你可以随时构建数组,如下所示:
func loadDefaultImages() {
var pictures : [[UIImageView]] = [];
let MaxRows: UInt32 = 4
let MaxCols: UInt32 = 4
for _ in 0..<MaxRows {
var aRow : [UIImageView] = []
for _ in 0..<MaxCols {
let newImage = UIImageView(image: UIImage(named: "first"))
aRow.append(newImage)
}
pictures.append(aRow)
}
}
但是,执行此操作的更简洁方法是使用 count, repeatedValue
函数创建具有默认大小的数组,如下所示:
func loadDefaultImages() {
let MaxRows: Int = 4
let MaxCols: Int = 4
var pictures = [[UIImageView?]](count: MaxRows, repeatedValue: [UIImageView?](count: MaxCols, repeatedValue: nil))
for row in 0..<MaxRows {
for col in 0..<MaxCols {
let newImage = UIImageView(image: UIImage(named: "first"))
pictures[row][col] = newImage
}
}
}