우선 마지막 접속 일을 저장하는 유저디폴트를 멤버를 만들었다.
메인 뷰에 닿으면, 그날 날짜를 저장한다. (시간은 필요없음)
func getWeekTotalStepCounts() {
print("main",#function)
//기준점: 마지막접속일
//오늘, 새벽 2시부터 내일 새벽 2시까지
let year = calendar.component(.year, from: today)
let month = calendar.component(.month, from: today)
let day = calendar.component(.day, from: today)
let dateComponents = DateComponents(year: year, month: month, day: day, hour: resetHour, minute: resetMinute)
let endDate = calendar.date(from: dateComponents) //today
let startDate = calendar.date(byAdding: .day, value: -6, to: endDate!)
var totalCount = 0.0
print(today)
print(startDate!, endDate!)



리셋시간을 새벽 2시로 설정했을 때 오늘은 제외한 6일 간의 기록을 새벽 2시 기준으로 가져온다.
아아..........................
데이트포매터와 싸우고,,, 일, 일주일전, 이번주, 이번달 등의 정보를 구할 때 반복되는 코드가 많아서 Date+Extension으로 뺐다.
(그리고 무한오류 겪기)
// Date+Extension
import UIKit
extension Date {
var year: Int {
return Calendar.current.component(.year, from: self)
}
var month: Int {
return Calendar.current.component(.month, from: self)
}
var day: Int {
return Calendar.current.component(.day, from: self)
}
var weekday: Int {
return Calendar.current.component(.weekday, from: self)
}
var hour: Int {
return Calendar.current.component(.hour, from: self)
}
var minute: Int {
return Calendar.current.component(.minute, from: self)
}
func getPinDate(startDay: Int) -> Date {
let dateComponents = DateComponents(year: self.year, month: self.month, day: self.day, hour: UserDefaults.standard.resetTime!.hour, minute: UserDefaults.standard.resetTime!.minute)
let pinDate = Calendar.current.date(from: dateComponents)
return pinDate!
}
func getPinDate() -> Date {
let dateComponents = DateComponents(year: self.year, month: self.month, day: self.day, hour: UserDefaults.standard.resetTime!.hour, minute: UserDefaults.standard.resetTime!.minute)
let pinDate = Calendar.current.date(from: dateComponents)
return pinDate!
}
}
DispatchQueue.global().sync를 이용해서 순차적으로 코드가 실행되기를 바랐지만.. 아직 제대로 이해하지 못해서 인지 여러 블로그에 있는 걸 따라해도 순서대로 실행이 되지 않는 느낌이었다..그래서 어느정도 포기..
나중에 더 공부해야겠다.