Ios 数组不附加图像

Ios 数组不附加图像,ios,arrays,swift,Ios,Arrays,Swift,我试图将图像附加到二维数组中。我现在就是这样做的: var imgArr1: [UIImage] = [] var imgArr2: [UIImage] = [] var allArrays = [imgArr1, imgArr2] for array in 0 ..< allArrays.count { for i in categories { //list of folder names used below for img in fileNames("p

我试图将图像附加到二维数组中。我现在就是这样做的:

var imgArr1: [UIImage] = []
var imgArr2: [UIImage] = []

var allArrays = [imgArr1, imgArr2]

for array in 0 ..< allArrays.count {
    for i in categories { //list of folder names used below
        for img in fileNames("path/to/my/images/i") { //fileNames() returns all the files' names it finds in the folders
            print(img) //this does print out the correct file names, for instance: "img_1.jpg"
            allArrays[array].append(UIImage(named: img))
        }
    }
}
print(imgArr1) //this prints: "[]"`
var imgArr1:[UIImage]=[]
var imgArr2:[UIImage]=[]
var allArrays=[imgArr1,imgArr2]
对于0中的数组..
我们可以假设循环和自定义函数正在工作。(请注意我在代码中的注释:图像名称已正确打印出来。)

我已经尝试了其他方法将新图像附加到数组中,比如
insert at index
和使用
+=

有什么想法吗?
提前谢谢

for var array in allArrays
创建数组的可变副本。附加到它不会改变原始数组,因为数组是值类型。您必须直接将图像添加到
imgArr1
(或
imgArr2
,或两者)才能使其工作

编辑:作为如何执行此操作的示例,您可以循环遍历外部数组的索引,并使用下标修改内部数组:

var all: [[Int]] = [[], [], []]

for arrayIndex in 0 ..< all.count {
    for number in 0 ..< 10 {
        all[arrayIndex].append(number)
    }
}

print(all.first!.count) // 10
var all:[[Int]]=[]、[]、[]、[]
对于0..
创建数组的可变副本。附加到它不会改变原始数组,因为数组是值类型。您必须直接将图像添加到
imgArr1
(或
imgArr2
,或两者)才能使其工作

编辑:作为如何执行此操作的示例,您可以循环遍历外部数组的索引,并使用下标修改内部数组:

var all: [[Int]] = [[], [], []]

for arrayIndex in 0 ..< all.count {
    for number in 0 ..< 10 {
        all[arrayIndex].append(number)
    }
}

print(all.first!.count) // 10
var all:[[Int]]=[]、[]、[]、[]
对于0..
我猜
UIImage(名为:img)
不起作用。请改用
imageWithContentsOfFile:
,因为它是一个路径,而不是用作参数的图像名称。我认为这可能也是问题所在,但当我执行
print(UIImage(name:img))
时,它会打印图像的属性(至少一些数字和大小)。我也尝试过使用和不使用文件扩展名。这里的问题是swift数组是值类型,它总是被复制。如果您检查
allarray
它将包含图像,但imgArr1是空的。那么我该怎么办?
对于0中的数组。
给出错误?我猜
UIImage(名为:img)
不起作用。请改用
imageWithContentsOfFile:
,因为它是一个路径,而不是用作参数的图像名称。我认为这可能也是问题所在,但当我执行
print(UIImage(name:img))
时,它会打印图像的属性(至少一些数字和大小)。我也尝试过使用和不使用文件扩展名。这里的问题是swift数组是值类型,它总是被复制。如果您检查
allarray
它将包含图像,但imgArr1是空的。那么我该怎么办?
对于0中的数组。
给出错误?对,但当我删除
var
时它会抱怨。那我怎么把副本的内容分配给原件呢?你得直接把它们添加到原件上。来吧。一定有办法做到的。我有13个数组,我不能为每个数组创建for循环!我尝试对0..中的数组使用
循环,而不是对Allarray
中的var数组使用
,然后将图像添加到
Allarray[array]
。不成功:(你的意思是0中数组的
?应该可以。你是如何附加项目的?哦,是的。像这样:
allArrays[array]。append(UIImage(名称:img)!)
。当我打印
allarray
中的数组时,它们仍然是空的。是的,但是当我删除
var
时它会抱怨。那么我该如何获取副本的内容并将其分配给原件?你必须直接将它们添加到原件中。来吧。一定有办法做到这一点。我有13个数组,我做不到每个都有一个for循环!我尝试使用
在0中对数组进行循环。
而不是在allarray
中对var数组进行循环,然后将图像添加到
allarray[array]
。没有成功:(你是说
用于0中的数组。
?应该可以。你是如何附加项目的?哦,是的。像这样:
allarray[array]。append(UIImage(name:img)!
。当我打印
allarray
中的数组时,它们仍然是空的。