NSDateformatter dateFromString AnyObject

时间:2014-12-30 22:44:22

标签: ios swift

我有一个NSDates的AnyObjects数组,我正在尝试转换为工作日(Mon,Tue,Wed ..)

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

  

[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上阅读,但无济于事。我正在将我作为String转换为因为如果我不知道我得到错误消息AnyObject不能转换为String。我的感觉是这种类型不匹配,但我不确定,我不知道如何找出答案。如果有帮助,我已将错误消息附加为图片。如果你可以推荐一本关于如何理解错误的教程或书籍,我会很感激,因为我正在努力学习。

非常感谢任何帮助!

enter image description here

2 个答案:

答案 0 :(得分:1)

extension NSDate {
    var weekdayName: String {
        let formatter = NSDateFormatter()
        formatter.dateFormat = "EEEE"
        return formatter.stringFromDate(self)
    }
}

let myArrayOfAnyObjects:[AnyObject] = [NSDate()]

myArrayOfAnyObjects.first!.weekdayName   // "Tuesday"

答案 1 :(得分:1)

xAxisDates数组包含NSDate个对象,因此

let date = formatter.dateFromString(i as String)

没有任何意义,i as String已经崩溃,因为iNSDate 而不是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))
    }
}