ios - NSDateformatter dateFromString AnyObject

标签 ios swift

我有一个 NSDates 的 AnyObjects 数组,我正在尝试转换为工作日,例如(周一、周二、周三......)

当我将它打印到控制台时,数组看起来像这样:

[2014-12-03 22:16:26 +0000, 2014-12-05 22:16:26 +0000, 2014-12-11 22:16:26 +0000]

这是我的代码:

var xAxisDates = [AnyObject]()


func dateformatter() {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

    let weekDayFormatter = NSDateFormatter()
    weekDayFormatter.dateFormat = "EEE"

    println(xAxisDates)

    for i in xAxisDates{

        let date = formatter.dateFromString(i as String)
        println(weekDayFormatter.stringFromDate(date!))
    }
}

代码崩溃于:

    let date = formatter.dateFromString(i as String)

我一整天都在努力找出我做错了什么,并阅读了几乎所有关于 NSDateFormatter 的问题,但无济于事。我将 i 转换为字符串,因为如果我不这样做,我会收到错误消息 AnyObject 不可转换为字符串。我的感觉是类型不匹配,但我不确定,而且我不知道如何找出答案。如果有帮助,我已将错误消息作为图片附上。如果您可以推荐有关如何理解错误的教程或书籍或其他东西,我将不胜感激,因为我正在努力学习。

任何帮助将不胜感激!

enter image description here

最佳答案

xAxisDates 数组包含 NSDate 对象,因此

let date = formatter.dateFromString(i as String)

没有任何意义,i as String 已经崩溃了,因为 i 是一个 NSDate 而不是 String

您只需要将日期转换为字符串:

for i in xAxisDates {
    println(weekDayFormatter.stringFromDate(i as NSDate))
}

或者更好地检查数组元素是否实际上是 NSDate 对象:

for i in xAxisDates {
    if let date = i as? NSDate {
        println(weekDayFormatter.stringFromDate(date))
    }
}

关于ios - NSDateformatter dateFromString AnyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713648/

相关文章:

ios - SwiftUI : Segue navigation

ios - 快速按钮操作文本更改

iphone - UTableViewController 上的触摸事件

iphone - 日期未出现在UILabel中

swift - 瞬时可选 NSSet 因 EXC_BAD_ACCESS 错误而崩溃

ios - 为什么核心位置类的 Xcode 代码完成不起作用

ios - 菜单栏和图像/按钮未正确对齐

swift - 与 Int 比较的枚举

ios - Swift - 使 Sprite Kit 节点仅受重力影响?

ios - 如何通过 AirPlay 在 Apple TV 上显示覆盖