如何修改代码,使其不显示具有相同activity.Date
(不带时间)的活动,其中activity.Date
是来自CoreData实体的Date()值。
List(Array(place.activities as Set), id: \.self) { activity in
Text(dateFormatter.string(from: activity.date))
}
下面是一个可能方法的演示(假定是代码的副本):
// Confirm your activity to Equatable explicitly like
struct MyActivity: Identifiable, Equatable, Hashable {
static func == (lhs: Self, rhs: Self) -> Bool {
lhs.name == rhs.name &&
Calendar.current.isDate(lhs.date, inSameDayAs:rhs.date)
}
let id = UUID()
var name: String
var date: Date
}
struct TestView: View {
var activities: [MyActivity] = []
var body: some View {
// convert to set and back to array
List(Array(Set(activities)), id: \.self) { activity in
VStack {
Text(activity.name)
Text(dateFormatter.string(from: activity.date))
}
}
}
}