我已经创建了NSManagedObject sReminderDate:Date()。它存储在coreData中。其值来自用户在日期选择器中设置的日期和时间。
加载viewcontroller时,将此值与currentDate和time进行比较,如果currentdime>sReminderDate,则标签将显示“time's Up”。问题是,当用户第一次加载viewcontroller时,没有将时间和日期设置为sReminderDate为“null”。因此,它正在崩溃我的应用程序,因为这是空的,我正在使用它进行比较。
我很难用if-let和guard语句来展开它。希望您能帮忙!
let currentDate = NSDate() //Current date and time stored whenever viewcontroller is loaded
if ((currentDate as! Date ) >= (editnotes?.sSelectedDate)! && (editnotes?.sReminderState == true)) //Comparison -> sSelectedDate is the date stored in coreData by the user when scheduling task
{
editnotes?.sReminderDate = "Time is up"
reminderMsg.text = editnotes?.sReminderDate
}
最佳答案
看看你想要实现的是当你没有这个值的时候,当你得到它们并且可以比较的时候,分离代码,也就是说,实现你的逻辑
我会做这样的东西:
guard let selectedDate = editnotes?.sSelectedDate,
let needsToRemind = editnotes?.sReminderState else {
// implement logic when you DO NOT have values
return
}
// Everything is cool and you have values => can compare
if selectedDate < Date() && needsToRemind {
editnotes?.sSelectedDate = "Time's up"
// Possibly editnotes?.sReminderDate better to unwrap somehow
// if-let, guard-let, ??
reminderMsg.text = editnotes?.sReminderDate
}
代码更简洁,更具代表性