我想知道是否可以从car
中选择第一个和最后一个Bool = true
将它们放置在Text
中?如果可以,我可能需要将let month
重写为另一个东西,例如“march”到“March”。
struct Car: Identifiable {
let id = UUID()
let name: String
let january: Bool, let february: Bool, let march: Bool // etc to december
}
let cars = [
Car(name: "Peugeot 208", january: false, february: false, march: false, april: false, may: true, june: true, july: true, august: true, september: false, october: false, november: false, december: false),
Car(name: "Dacia Sandero", january: false, february: false, march: true, april: true, may: false, june: false, july: false, august: false, september: false, october: false, november: false, december: false)
]
struct ContentView: View {
var body: some View {
ForEach(cars.sorted { $0.name < $1.name }) { car in
Text(car.name)
Text("From \(?) to \(?)") // if Peugeot 208: From May to August
}
}
}
你们有什么主意吗
1条答案
按热度按时间lf5gs5x21#
你的数据对月份布尔值没有序列感。这就是为什么你很难得到你想要的输出。你需要给予它一些。一个选择是通过枚举。如果你使枚举符合
Comparable
,你会得到自动推断的序列元素的顺序。这样就可以以更直观的方式记录月份(我假设这是关于所有权的,但要适当地重命名属性!)
这反过来将允许您计算开始和结束月份。
使用中
然后,您可以在SwiftUI Text视图中使用
ownership
属性。