我需要设计一个字符串类型的扩展,它代表一周中的一天,并返回相应的数字,从Sunday = 1开始,以Saturday = 7结束
例如Sunday = 1, Monday = 2, Tuesday = 3, Wednesday = 4, thursday = 5, Friday = 6, Saturday = 7
这是一个想法,我有,但我不知道如何把Int的值为星期的一天:
extension String{
var sunday: String {return self}
var monday: String {return self}
var tuesday:String {return self}
var wednesday: String {return self}
var thursday: String {return self}
var friday: String {return self}
var saturday: String {return self}
}
另一个想法是这样,但我不知道如何返回数字,或者如果它的值将下面一周的天数添加到daysW:
extension String{
var daysW:String{
return self
}
func number() -> Int{
return self
}
}
.daysW
.number()
有谁能帮帮我,我是Swift新手,它让人困惑
你最好创建一个枚举,它的rawValue是一个字符串,并添加一个计算属性来返回一个值:
extension Calendar {
enum Weekday: String, CaseIterable, CustomStringConvertible {
case sunday, monday, tuesday, wednesday, thursday, friday, saturday
var description: String { rawValue.capitalized }
var value: Int { Self.allCases.firstIndex(where: {$0.rawValue == rawValue})! + 1 }
}
}
let monday = Calendar.Weekday.monday
print(monday) // Monday
print(monday.value) // 2
如果需要将字符串转换为数字,可以初始化一个新的case并返回它的值:
extension String {
var weekday: Int? { Calendar.Weekday(rawValue: lowercased())?.value }
}
"monday".weekday // 2
"Monday".weekday // 2
"MONDAY".weekday // 2