SwiftUI Identifiable 协议

当使用 .sheet(item: $selectedTag) 传入值为 Int 时报错,会提示:

1
Instance method 'sheet(item:onDismiss:content:)' requires that 'Int' conform to 'Identifiable'

item 应该遵循 Identifiable 协议,Int 类型不支持。所以可以这样:

1
2
3
4
5
6
extension Int: Identifiable {
public typealias ID = Int
public var id: Int {
return hashValue
}
}

包括 ForEach 的经典报错

1
Referencing initializer 'init (_:content:)' on 'ForEach' requires that 'String' conform to 'Identifiable'

也可以用同样的方法解决。

参考:SwiftUI Initialzier requires String conform to Identifiable

关于 ForEach 与 Identifiable:

  1. ForEach
  2. 「转载」SwiftUI ForEach 与 Identifiable 协议

SwiftUI Identifiable 协议
https://wonderhoi.com/2024/10/30/SwiftUI-Identifiable-协议/
作者
wonderhoi
发布于
2024年10月30日
许可协议