[英]Equality operator not working inside SwiftUI ForEach
我有一个 ForEach 循环,需要将 true 或 false 传递到它生成的自定义视图中,这取决于它是否是 ForEach 循环的第一次迭代。 我尝试过使用如下所示的三元运算符,以及经典的 if-else,但似乎如果我使用相等 (==) 运算符将“卡片”与卡片进行比较。首先,代码无法编译...
struct CustomGeneratedView: View {
private var cards: [CustomStruct] = [object1, object2, object3, object4,...]
var body: some View {
VStack {
ForEach(cards.prefix(3).sorted(by: { $0.id > $1.id }), id: \.self) { card in
CardView(firstCard: card == cards.first) // this is the problem line, not sure how to fix it...
}
}
}
}
CustomStruct 看起来像这样:
struct CustomStruct: Hashable, Equatable {
var id: Int
let type: CustomStruct2 //this also conforms to equatable
var title: String?
var rated: CustomStruct3? //this also conforms to equatable
}
问题是cards.first
返回一个可选的。 所以尝试这样的事情,对我来说效果很好:
ForEach(cards.prefix(3).sorted(by: { $0.id > $1.id }), id: \.self) { card in
CardView(firstCard: (cards.first == nil ? false : card == cards.first!))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.