Swift 5.+ - 使类可哈希?

Ger*_*rry 2 swift swift5 swiftui

我对 swift 很陌生,所以请原谅任何明显的误解。我试图研究但没有好的答案。

我有一个带有以下迭代的 NavigationView

ForEach(listOfStuff, id: \.self)
Run Code Online (Sandbox Code Playgroud)

listOfStuff定义为符合 Hashable 的结构,一切正常。

我想将结构更改为类,但不知道如何使类可哈希以便工作\.self(它一直抱怨该类必须可哈希)

例子是旧的或者一直在谈论结构。我什至不知道是否可以在 ForEach 中使用类?我该怎么办?

谢谢

Asp*_*eri 5

这是在所描述的用例中使用基于类的模型的示例。使用 Xcode 11.4 进行测试

class Stuff: Hashable, Equatable {
    static func == (lhs: Stuff, rhs: Stuff) -> Bool {
        lhs.title == rhs.title
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(title)
    }

    var title: String = ""
}

struct StaffView: View {
    let listOfStaff: [Stuff]

    var body: some View {
        ScrollView {
            ForEach(listOfStaff, id: \.self) { stuff in
                Text(stuff.title)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)