![](/img/trans.png)
[英]Error: Instance method 'onReceive(_:perform:)' requires that 'Int' conform to 'Publisher'
[英]VStack shows error "Instance method 'sheet(item:onDismiss:content:)' requires that 'Int' conform to 'Identifiable'"
VStack 行显示错误“Instance method 'sheet(item:onDismiss:content:)' requires that 'Int'符合 'Identifiable'”但我认为我没有犯任何错误? 我有吗?
感觉好像错误来自我的工作表,抱怨我的 Int 应该符合“可识别”但是 Int 不是“可识别”,因为它是原始的? 我将如何解决这个问题?
struct SheetView: View {
@State var bindingItemDiscounts: [Double] =
[ 0.99, 0.25, 0.31, 11.99, 19.99, 0.1, 0.5]
@State var discountMoreThanTen: Int?
var body: some View {
VStack(alignment: .leading) { <- this line
Button {
discountMoreThanTen = bindingItemDiscounts.count
} label: { Text("Check Discounts") }
}.sheet(item: $discountMoreThanTen) { newValue in
if discountMoreThanTen ?? 0 <= 10 {
List(bindingItemDiscounts, id: \.self) { discount in
Text("Discount : \(discount)")
}
}
}
}
}.
您正在使用Binding<Item?>
sheet 。 Item是一种类型,因此它必须符合Identifiable才能唯一标识。
此外, Int
不是 Swift 中的原语。 Int
基本上是Type就像您的其他自定义数据类型一样,因此您需要手动使其可识别。
在您的文件中添加此扩展名将解决此问题:
extension Int: Identifiable {
public var id: Self { self }
}
如果需要 UUID(),请改用它:
extension Int: Identifiable {
public var id: String {
return UUID().uuidString
}
}
struct
。Int
不符合Identifiable
。 要解决您的问题,只需扩展Int
以符合Identifiable
如下所示:
extension Int: Identifiable {
public var id: Int { return self }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.