2014-12-04 65 views
1

我寫了一個函數,根據今天的日期得到下一個星期一的NSDate,但是當我嘗試調用此函數時,我得到了一個runtime errorSwift:試圖獲取NSDate將來的日期時獲取EXC_BAD_INSTRUCTION

我收到一個錯誤,指出:

主題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 
    } 
} 
+0

你試過展開可選的日曆'日程表.locale = ...'!? – Eimantas 2014-12-04 08:00:39

+0

@Eimantas/foreheadslap就是這樣!讓它成爲答案,我可以接受!謝謝。 – 2014-12-04 08:02:47

+0

你確定這解決了這個問題嗎? (我看不出這有什麼不同。)在我看來,真正的錯誤是你應該使用.WeekOfYearCalendarUnit而不是.WeekCalendarUnit。 – 2014-12-04 08:10:34

回答

1

嘗試展開可選calendar

calendar!.locale = NSLocale.currentLocale()