gpt4 book ai didi

Swift - 检查两个数组是否在同一天没有循环

转载 作者:行者123 更新时间:2023-11-28 11:41:14 24 4
gpt4 key购买 nike

我有 2 个数组 [Date]

首先是 myDates:[Date]

第二个是 coreDataDates:[Date]

我要用核心数据日期循环第二个数组

如何在循环中检查 coreDataDates 中是否存在 myDatesDAY

我知道,我可以使用函数 NSCalendar isDate(_:inSameDayAs:),但是是否有一个函数我不需要循环 myDates:[Date]coreDataDates:[Date] for 循环中?

新手示例:

for date1 in coreDataDates{
for date2 in myDates{
if(Calendar.current.isDate(date1, inSameDayAs: date2)==true){
//have it
}else{
//don't have it
}
}
}

我需要不必在循环中使用循环的代码

最佳答案

如果您不在意时间,Apple 建议您将时间设置为中午,因为夏令时的时钟变化导致每天都有中午但没有午夜。

将两个数组中的所有日期转换为中午,然后求两个集合的并集:

import Foundation

extension Date {
var noon: Date {
return Calendar.current.date(bySettingHour: 12, minute: 0, second: 0, of: self)!
}
}

let myDates = [
DateComponents(calendar: .current, year: 2018, month: 12, day: 1, hour: 1).date!,
DateComponents(calendar: .current, year: 2018, month: 12, day: 2, hour: 2).date!,
DateComponents(calendar: .current, year: 2018, month: 12, day: 4, hour: 3).date!
]
let coreDataDates = [
DateComponents(calendar: .current, year: 2018, month: 12, day: 1, hour: 4).date!,
DateComponents(calendar: .current, year: 2018, month: 12, day: 3, hour: 5).date!,
DateComponents(calendar: .current, year: 2018, month: 12, day: 4, hour: 6).date!
]

let myDateSet = Set(myDates.map { $0.noon })
let coreDataDateSet = Set(coreDataDates.map { $0.noon })
let commonDateSet = myDateSet.intersection(coreDataDateSet)
print(commonDateSet)

关于Swift - 检查两个数组是否在同一天没有循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53628903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com