0

我正在开发一个应用程序UICollectionViewDiffableDataSource。一切都像魅力一样,事实上,collectionView当我添加新模型时,我已经自动更新了。但是,当我更新我现有的元素之一时,我无法看到更新的单元格。

这是一个例子:

我有这个模型

final class Contact: Hashable {
    var id: UUID
    var name: String
    
    init(id: UUID = UUID(), name: String) {
        self.id = id
        self.name = name
    }
    
    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
        hasher.combine(name)
    }
    static func == (lhs: Contact, rhs: Contact) -> Bool {
        
        return lhs.id == rhs.id
    }
    
}

这填充了我的UICollectionView. 如果我尝试在 上更新它的名称didSelectItem,然后调用我的分析差异的函数NSDiffableDataSourceSnapshot,它不会更新我的UICollectionView. 如果我Contact在 didSelect 上添加另一个(仅用于测试),我会UICollectionView根据需要完美更新。

4

1 回答 1

0

我刚刚自己解决了。我试图将类声明更改为struct而不是final class. 我真的不知道为什么,但似乎在声明为的项目数组中Class,快照检查引用是否相同,但不是其内容。因此,当我更新任何变量时它不会更新视图,即使我将它们添加到任何一个hash required function并且equatable required function

于 2020-07-07T11:08:56.107 回答