Swift:在尝试获取NSDate未来日期时获取EXC_BAD_INSTRUCTION

时间:2014-12-04 07:50:21

标签: ios swift nsdate

我根据今天的日期编写了一个函数来获取下周一的NSDate,但是当我尝试调用此函数时,我得到runtime error

我收到一条错误消息:

主题1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

在这一行:

calendar?.locale = NSLocale.currentLocale()

为什么会这样?我需要采取哪些措施来解决这个问题?

func getNextMonday() -> NSDate {
    let today = NSDate()
    var calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
    calendar!.locale = NSLocale.currentLocale()

    let components = calendar!.components(.YearCalendarUnit | .WeekOfYearCalendarUnit | .HourCalendarUnit | .MinuteCalendarUnit | .SecondCalendarUnit, fromDate: today)
    components.weekday = 2
    components.weekOfYear = components.weekOfYear + 1
    components.hour = 8
    components.minute = 0
    components.second = 0

    if let nextMonday = calendar?.dateFromComponents(components) {
        return nextMonday
    }
    else {
        return today
    }
}

1 个答案:

答案 0 :(得分:1)

尝试展开可选的calendar

calendar!.locale = NSLocale.currentLocale()