SwiftUI - 带有可识别协议的自定义标识符

Swi*_*kie 7 struct protocols swiftui identifiable

我想知道是否可以用自定义标识符覆盖标准标识符。

我有一个简单的结构:

struct MyUserData: Identifiable {
    var userId: String
    var userFirstName: String
    var userLastName: String
}
Run Code Online (Sandbox Code Playgroud)

但是,如果var id: ObjectIdentifier结构中没有行,可识别协议将无法工作。同时,我不想使用“id”名称。userId 在我的模型中也是唯一的(它是一个 UUID)。有没有办法告诉可识别协议接受“userId”而不是“id”?

谢谢!

And*_*rew 16

不幸的是,可识别需要一个名为 id 的属性。解决这个问题的最简单方法是在结构中使用一个名为 id 的计算属性。

struct MyUserData: Identifiable {
    var userId: String
    var userFirstName: String
    var userLastName: String

    var id: String {
        userId
    }
}
Run Code Online (Sandbox Code Playgroud)


New*_*Dev 11

您可以将 anyHashable用作以下id要求的属性Identifiable

extension MyUserData: Identifiable {
  var id: String { userId }
}
Run Code Online (Sandbox Code Playgroud)