我创建了一个NSManagedObject sReminderDate:Date()。它存储在coreData中。此值来自用户从datePicker设置的日期和时间。
当加载viewcontroller时,将该值与currentDate和time进行比较,如果currentTime> sReminderDate然后标签上写着“Time is Up”。问题是当用户第一次加载viewcontroller时,时间和日期未设置sReminderDate为'null'。因此,它崩溃了我的应用程序,因为它是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
}
答案 0 :(得分:1)
看看你想要实现的是在没有这些值时分离代码,何时获得它们并且可以比较,即实现你的逻辑
我会做出类似的事情:
127.0.0.1:18890/< url >
代码更清晰,更具代表性
答案 1 :(得分:0)
您可以在swift中使用逗号(,)作为AND运算符。
let currentDate = Date()
if let editnotes = editnotes, currentDate >= editnotes.sSelectedDate!, editnotes.sReminderState == true {
editnotes?.sReminderDate = "Time is up"
reminderMsg.text = editnotes?.sReminderDate
}
let currentDate = Date()
if let selectedDate = editnotes?.sSelectedDate, let reminderState = editnotes?.sReminderState, currentDate >= selectedDate, reminderState == true {
editnotes?.sReminderDate = "Time is up" reminderMsg.text = editnotes?.sReminderDate
}