Arrays 根据swift中的条件将索引位置更改为0
我有一个类似的数组Arrays 根据swift中的条件将索引位置更改为0,arrays,swift,Arrays,Swift,我有一个类似的数组 [openingTimes(id: 389A2E43-65C3-4555-8878-D63E1D9BE664, day: "Sunday", workingHours: "11AM-4PM 8PM-11PM"), openingTimes(id: 50041432-5709-4F9D-BCF0-935504741037, day: "Monday", workingHours: "11AM-4PM 8PM-
[openingTimes(id: 389A2E43-65C3-4555-8878-D63E1D9BE664, day: "Sunday", workingHours: "11AM-4PM 8PM-11PM"), openingTimes(id: 50041432-5709-4F9D-BCF0-935504741037, day: "Monday", workingHours: "11AM-4PM 8PM-11PM"), openingTimes(id: 5A7F2A66-DABD-470D-9C5B-3E4EA0BA38F6, day: "Tuesday", workingHours: "11AM-4PM 8PM-11PM"),openingTimes(id: 9D977AE4-BC50-4D3E-9E36-6A3118A54F77, day: "Wednesday", workingHours: "11AM-4PM 8PM-11PM"), openingTimes(id: 343E3918-14A3-411A-A43F-EBF1D6F13B58, day: "Thursday", workingHours: "1PM-5PM 8PM-12PM"), openingTimes(id: B658E07B-BBC8-4802-8C0A-DA79A0871BF8, day: "Friday", workingHours: "11AM-4PM 8PM-11PM"), openingTimes(id: 29A15DC2-E0A1-46DA-A022-CF6102B239F4, day: "Saturday", workingHours: "11AM-4PM 8PM-11PM")]
当日期与当前日期匹配时,我需要将索引位置更改为0?我们如何才能做到这一点?
目前我正在使用以下功能取当天
func getTodayWeekDay()-> String{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE"
let weekDay = dateFormatter.string(from: Date())
return weekDay
}
您可以找到第一个索引,其中day等于今天的工作日,从该索引中获取序列,删除该子范围并在startIndex中插入子序列的内容。请注意,Swift惯例是以小写字母开头命名结构:
你想得到今天吗?这就是你要问的吗?你的问题完全不清楚。“将索引位置更改为
0
”是什么意思?你的问题中根本没有索引。如果日期与今天的工作日一致,是否希望将元素移到集合的开始位置?是否要移动数组以使当前日期位于位置0?@JoakimDanielsonYes@Rob. 我需要根据今天的情况重新安排索引位置,使之与今天匹配,但我需要以下格式打开时间//[{id“B658E07B-BBC8-4802-8C0A-DA79A0871BF8”,日期“星期五”,工作时间“上午11点到下午4点8PM-11PM”},{id“389A2E43-65C3-4555-8878-D63E1D9BE664”,日期“星期六”,工作时间“上午11点到下午4点8PM-11PM”},{id“50041432-5709-4F9D-BCF0-935504741037”,日期“星期日”,工作时间“上午11点至下午4点8点至晚上11点”},{id“5A7F2A66-DABD-470D-9C5B-3E4EA0BA38F6”,@Ben10您只需从该索引中获取序列,删除该子范围并在startIndex中插入子序列的内容。我个人可能会使用日历
获取工作日,然后使用该日历对日期格式化程序进行索引t@LeoDabus为什么?这可以通过DateFormatter.locale
修改。
extension Date {
static var weekDay: String { Date().weekDay }
var weekDay: String { Formatter.weekDay.string(from: self) }
}
extension Formatter {
static let weekDay: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "cccc"
return dateFormatter
}()
}
struct OpeningTimes {
let id: String
let day: String
let workingHours: String
}
var openingTimes: [OpeningTimes] = [
.init(id: "389A2E43-65C3-4555-8878-D63E1D9BE664", day: "Sunday", workingHours: "11AM-4PM 8PM-11PM"),
.init(id: "50041432-5709-4F9D-BCF0-935504741037", day: "Monday", workingHours: "11AM-4PM 8PM-11PM"),
.init(id: "5A7F2A66-DABD-470D-9C5B-3E4EA0BA38F6", day: "Tuesday", workingHours: "11AM-4PM 8PM-11PM"),
.init(id: "9D977AE4-BC50-4D3E-9E36-6A3118A54F77", day: "Wednesday", workingHours: "11AM-4PM 8PM-11PM"),
.init(id: "343E3918-14A3-411A-A43F-EBF1D6F13B58", day: "Thursday", workingHours: "1PM-5PM 8PM-12PM"),
.init(id: "B658E07B-BBC8-4802-8C0A-DA79A0871BF8", day: "Friday", workingHours: "11AM-4PM 8PM-11PM"),
.init(id: "29A15DC2-E0A1-46DA-A022-CF6102B239F4", day: "Saturday", workingHours: "11AM-4PM 8PM-11PM")
]
if let index = openingTimes.firstIndex(where: {$0.day == Date.weekDay}) {
let subsequence = openingTimes[index...]
openingTimes.removeSubrange(index...)
openingTimes.insert(contentsOf: subsequence, at: 0)
}
openingTimes // {id "29A15DC2-E0A1-46DA-A022-CF6102B239F4", day "Saturday", workingHours "11AM-4PM 8PM-11PM"}, {id "389A2E43-65C3-4555-8878-D63E1D9BE664", day "Sunday", workingHours "11AM-4PM 8PM-11PM"}, {id "50041432-5709-4F9D-BCF0-935504741037", day "Monday", workingHours "11AM-4PM 8PM-11PM"}, {id "5A7F2A66-DABD-470D-9C5B-3E4EA0BA38F6", day "Tuesday", workingHours "11AM-4PM 8PM-11PM"}, {id "9D977AE4-BC50-4D3E-9E36-6A3118A54F77", day "Wednesday", workingHours "11AM-4PM 8PM-11PM"}, {id "343E3918-14A3-411A-A43F-EBF1D6F13B58", day "Thursday", workingHours "1PM-5PM 8PM-12PM"}, {id "B658E07B-BBC8-4802-8C0A-DA79A0871BF8", day "Friday", workingHours "11AM-4PM 8PM-11PM"}]