我如何设计一个字符串类型的扩展,表示一周中的一天,并返回相应的数字?在斯威夫特



我需要设计一个字符串类型的扩展,它代表一周中的一天,并返回相应的数字,从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

最新更新