我已经创建了这个静态字典:

static var pictures = Dictionary<Int, Array<UIImage>>()

我想用图像填充它。在创建时,我不知道需要创建多少个键/值对。我必须从互联网上获取数据,但在此之后,我要进行填充,但我的字典仍然是空的:
for i in 0...Fetching.numberOfAliveListings - 1 {
    for _ in 0...AdsCollectionView.listings[i].photos.count - 1 {
        AdsCollectionView.pictures[i]?.append(UIImage(named: "noimage")!)
    }
}

最佳答案

pictures最初为空。因此,任何访问给定密钥值的尝试都将导致nil值。由于值(数组)是nil,可选的链接将跳过对append的调用。
一种解决方案是在查找给定Int的值时提供默认数组。

AdsCollectionView.pictures[i, default: []].append(UIImage(named: "noimage")!)

您可能还希望在声明pictures时考虑其他语法:
static var pictures = [Int: [UIImage]]()

关于ios - 将项目追加到字典中的数组不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51407326/

10-14 12:24