首页 > 解决方案 > 结构测试:可识别与类测试:可识别

问题描述

struct Test: Identifiable {}

导致错误:“类型'测试'不符合协议'可识别'”。
它需要“id”属性。

class Test: Identifiable {}

编译没有任何问题。
为什么?

标签: swift

解决方案


来自SE-0261 可识别协议(强调我的):

为了尽可能方便地符合 Identifiable,为所有类实例提供了一个默认 id:

extension Identifiable where Self: AnyObject {
    var id: ObjectIdentifier {
        return ObjectIdentifier(self)
    }
}

然后,其实例由其对象身份标识的类不需要显式提供 id:

final class Contact: Identifiable {
    var name: String

    init(name: String) {
        self.name = name
    }
}

推荐阅读