fatal error: Index out of range without using any array
fatal error: Index out of range without using any array
致命错误:当我使用循环
将日期转换为工作日时,没有使用任何数组,索引超出范围
func getDayOfWeek(_ today:String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:today)
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date!)]
return weekDay
}
这是一个数组:
dateFormatter.weekdaySymbols
如果字符串格式错误,'date' 也可能为 nil。你应该这样检查:
func getDayOfWeek(_ today:String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from:today) {
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date)]
return weekDay
}
return nil
}
Calendar.current.component(.weekday, from:date!)
从 1 到 7,但是 weekdaySymbols
的索引只能从 0 到 6,所以你必须减一才能得到正确的工作日:
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date!)-1]
也应该使用 if let
并且像其他答案建议的那样是可选的,以避免崩溃
您可能需要将工作日转换为周索引!
let weekname = getWeekDayName(weekDay: calendar.component(.weekday, from: date()))
func getWeekDayName(weekDay:Int) -> String
{
let f = DateFormatter()
let index:Int = (weekDay - 1) % 7
print("Week No: " + String(weekNo) + " No: " + String(index))
let weekName = f.weekdaySymbols[index]
print("Week Name: " + weekName)
return weekName
}
致命错误:当我使用循环
将日期转换为工作日时,没有使用任何数组,索引超出范围 func getDayOfWeek(_ today:String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:today)
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date!)]
return weekDay
}
这是一个数组:
dateFormatter.weekdaySymbols
如果字符串格式错误,'date' 也可能为 nil。你应该这样检查:
func getDayOfWeek(_ today:String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from:today) {
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date)]
return weekDay
}
return nil
}
Calendar.current.component(.weekday, from:date!)
从 1 到 7,但是 weekdaySymbols
的索引只能从 0 到 6,所以你必须减一才能得到正确的工作日:
let weekDay = dateFormatter.weekdaySymbols[Calendar.current.component(.weekday, from:date!)-1]
也应该使用 if let
并且像其他答案建议的那样是可选的,以避免崩溃
您可能需要将工作日转换为周索引!
let weekname = getWeekDayName(weekDay: calendar.component(.weekday, from: date()))
func getWeekDayName(weekDay:Int) -> String
{
let f = DateFormatter()
let index:Int = (weekDay - 1) % 7
print("Week No: " + String(weekNo) + " No: " + String(index))
let weekName = f.weekdaySymbols[index]
print("Week Name: " + weekName)
return weekName
}