我有一个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。我的感觉是这种类型不匹配,但我不确定,我不知道如何找出答案。如果有帮助,我已将错误消息附加为图片。如果你可以推荐一本关于如何理解错误的教程或书籍,我会很感激,因为我正在努力学习。
非常感谢任何帮助!
答案 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
已经崩溃,因为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))
}
}