let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy.MM.dd"
let todayDate = dateFormatter.date(from: today)!
let dictionary = Dictionary<String, Int>(uniqueKeysWithValues: terms.enumerated().map { index, element in
let temp = element.split(separator: " ")
let key = String(temp[0])
let value = Int(temp[1])!
return (key, value)
})
-우선 dictionary의 타입을 정해주고 Dictionary <String,Int>, 그리고 uniqueKeysWithvalues: 를 통해 Dictioanry를 생성해준다. uniqueKeysWithvalues: 는 Dictionary 초기화 메서드 중하나 이며, 해당 메서드는 키-값 쌍을 가진 배열을 사요ㅕㅇ하여 Dictionary를 생성한다, 정확히 말하면 매개변수로는 (Key,Value)로 되어있는 시퀸스를 입력해야한다. 하지만 주어진 약관 배열을 시퀸스로 되어 있지 않기 때문에, Map을 통해 시퀸스로 변환해주는 작업을 했고, map 를통해 ("A" , 6) 이런식의 시퀸스를 만들고 해당 시퀸스로 key,value 할당해서 Dictionary를 할당한다.
let calendar = Calendar.current
for (index, value) in privacies.enumerated(){
let temp = value.split(separator: " ")
let date = dateFormatter.date(from: String(temp[0]))!
let month = dictionary[String(temp[1])]!
let updatedDate = calendar.date(byAdding: .month, value: month, to:date)!
let result = todayDate.compare(updatedDate)
if result != .orderedAscending {
ans.append(index+1)
}
}
let result = todayDate.compare(updatedDate)
// result가 갖을 수 있는 세가지의 케이스
.orderedAscending -> 첫번째 값 (todayDate)이 두번째 값(updateDate)보다 작다.
todayDate가 updateDate보다 이전이다.
.orderedDescending -> 첫번째 값 (todayDate)이 두번째 값(updateDate)보다 크다.
todayDate가 updateDate보다 이후이다.
.orderedSame -> 첫번째 값 (todayDate)이 두번째 값(updateDate)보다 크다.
todayDate가 updateDate와 같다.