繁体   English   中英

等式运算符在 SwiftUI ForEach 中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM