我试图更改每个collectionview单元的tableView内容,因为我正在创建一个空数组,并且我将为单击的每个单元更改数组数据。我无法将数据从数组复制到另一个数组。
这是迅速的4.2,我只是想学习这些东西,所以不涉及任何后端。
var PictureArray = [UIImage(named: "s1") , UIImage(named: "s2"), UIImage(named: "s3"), UIImage(named: "s4"), UIImage(named: "s5") ]
copyArray.append(PictureArray)
错误是
可选类型'UIImage'的值?必须解包为'UIImage'类型的值
答案 0 :(得分:1)
尝试一下:
var PictureArray = [UIImage(named: "s1") , UIImage(named: "s2"), UIImage(named: "s3"), UIImage(named: "s4"), UIImage(named: "s5") ]
let arrCopy = pictures.map{$0}
答案 1 :(得分:0)
尝试以下代码:
var PictureArray = [UIImage(named: "s1") , UIImage(named: "s2"), UIImage(named: "s3"), UIImage(named: "s4"), UIImage(named: "s5") ]
var cpArray:[[UIImage]] = []
cpArray.append(PictureArray as! [UIImage])
此处cpArray在第0个索引中包含PictureArray。
You can access 1st image of pictureArray using cpArray[0][0]
答案 2 :(得分:0)
UIImage(named : "Image Name")
始终返回optional UIImage
。
var PictureArray = [UIImage(named: "s1") , UIImage(named: "s2"), UIImage(named: "s3"), UIImage(named: "s4"), UIImage(named: "s5") ]
显然PictureArray
的数组属于[UIImage?]
或Array<UIImage?>
您正尝试插入数组以复制array,从错误消息中可以清楚地假定这是[UIImage]
显然[UIImage] != [UIImage?]
这就是为什么您会出错。
您可以使用高阶方法
PictureArray = PictureArray.map{$0 as? UIImage}
copyArray.append(PictureArray)
或者如果您想使用幼稚的类型编码,请在PictureArray
for case let image in PictureArray {
if image != nil {
copyArray.append(image)
}
}