【发布时间】:2021-05-10 10:43:05
【问题描述】:
如何在 foreach 中检查第 1 项日期是否等于第 2 项日期。我可以在不使用 2 个 foreach 循环的情况下检查谓词中的相同日期吗?
struct TimedView: View {
static let taskDateFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter
}()
@State var releaseDate = Date()
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest var reminder: FetchedResults<CDReminder>
init(){
var calendar = Calendar.current
calendar.timeZone = NSTimeZone.local
let dateFrom = calendar.startOfDay(for: Date()) // eg. 2016-10-10 00:00:00
let dateTo = calendar.date(byAdding: .day, value: 1, to: dateFrom)
let predicate = NSPredicate(format : "date >= %@ AND date == %@", dateFrom as CVarArg)
self._reminder = FetchRequest(
entity: CDReminder.entity(),
sortDescriptors: [NSSortDescriptor(keyPath: \CDReminder.date, ascending: false)],
predicate: predicate)
}
var body: some View {
NavigationView {
VStack{
HStack{
Text("Zamanlanmis")
.font(.system(size: 40, weight: .bold, design: .rounded))
.foregroundColor(.red)
Spacer()
}
.padding(.leading)
List{
ForEach(reminder, id: \.self) { item in
DatedReminderCell(reminder: item, isSelected: false, onComplete: {})
.foregroundColor(.black)
}
}
}
}
}
现在我的输出是这样的
【问题讨论】:
-
这取决于您所说的相等、相同日期或等于最后一秒或...?
-
同一日期。说 itemOne.date = 01.01.2022 和 itemTwo.date = 01.01.2022 所以它应该返回 true
-
您正在视图中进行控制器工作。不。在其他地方比较和过滤你的东西。
标签: swift date sorting foreach