ios - Swift:在尝试获取 NSDate future 日期时获取 EXC_BAD_INSTRUCTION

标签 ios swift nsdate

我编写了一个函数来根据今天的日期获取下周一的 NSDate,但是当我尝试调用该函数时出现了一个运行时错误

我收到一条错误消息:

线程 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
    }
}

最佳答案

尝试展开可选的 calendar:

calendar!.locale = NSLocale.currentLocale()

关于ios - Swift:在尝试获取 NSDate future 日期时获取 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27288781/

相关文章:

iOS 访问照片的权限在设备上不起作用

ios - AVKit 播放器 View Controller Segue 中断

ios - 如何通过 2 个不同的按钮过滤 TableView 输出?

ios - CNContactStoreDidChange 是否有效?联系人更改时我无法收到回电

arrays - 如何快速获取一个月的对象

ios - viewController.view 不显示,但在 ViewDebugMode 时出现

ios - 将文本文件加载到数组结构中

ios - 解析登录和注册功能 SWIFT

ios - 获取当前季度的第一个日期

ios - Swift NSDateFormatter 没有使用正确的语言环境和格式