알림 비허용 상태에서 DetailGoalView에서 알림 설정을 켜려고 할때 뜨는 알러트가 중복으로 뜨는 부분 해결
🤔 고민 내용
알림을 여러개 생성하는건 별 문제없이 금방 되었는데 삭제 관련해서는 잘 안되더라구요?
설정했던 요일을 해제했을 때 해당 알림이 삭제되어야 하는데 어떤 이유에선지 계속 로그에 찍혔습니다. 그래서 제 지식선에서 최고의 디버깅 방법 print문을 사용했고 두가지 로직 문제를 발견했습니다.
// 알림 설정 호출
if isRemind {
let selectedDays = getSelectedDays()
viewModel.createNotification(detailGoal: detailGoal, newTitle: newTitle, selectedDays: selectedDays)
} else {
viewModel.deleteNotification(detailGoal: detailGoal)
}
위 코드는 저장 버튼을 눌렀을 때의 일어나는 로직입니다. 문제점이 보이시나요?
isRemind가 켜져있으면서 월요일을 취소하려 한다면 else문 이전에 true인 날짜를 생성하는 것 이외에도 false인 날짜를 지워주어야 합니다. 또한 어느 요일을 삭제할지도 넘겨주어야 하죠. 그래서 false로 되어있는 것을 배열로 가져오는 함수를 생성하고 반환받은 배열을 deleteNotification 에 넘겨주어야 합니다.
다음으로 isRemind가 false라면 모든 요일의 알림을 삭제해야하죠. 그래서 아래의 형태로 로직을 수정했습니다.
이와 마찬가지로 다른 페이지에서도 루틴 혹은 목표를 삭제할 경우에도 모든 알림을 삭제해주어야 합니다. 해당 로직도 모두 수정해두었고, 이제 잘 돌아갑니다 허허 Print문 한 백번 찍어가며 확인했으니 이제 Notification 관련해서는 웬만하면 이슈가 발생하지 않을 겁니다..!
📓 Overview
🤔 고민 내용
설정했던 요일을 해제했을 때 해당 알림이 삭제되어야 하는데 어떤 이유에선지 계속 로그에 찍혔습니다. 그래서 제 지식선에서 최고의 디버깅 방법 print문을 사용했고 두가지 로직 문제를 발견했습니다.
위 코드는 저장 버튼을 눌렀을 때의 일어나는 로직입니다. 문제점이 보이시나요?
isRemind가 켜져있으면서 월요일을 취소하려 한다면 else문 이전에 true인 날짜를 생성하는 것 이외에도 false인 날짜를 지워주어야 합니다. 또한 어느 요일을 삭제할지도 넘겨주어야 하죠. 그래서 false로 되어있는 것을 배열로 가져오는 함수를 생성하고 반환받은 배열을 deleteNotification 에 넘겨주어야 합니다. 다음으로 isRemind가 false라면 모든 요일의 알림을 삭제해야하죠. 그래서 아래의 형태로 로직을 수정했습니다.
이와 마찬가지로 다른 페이지에서도 루틴 혹은 목표를 삭제할 경우에도 모든 알림을 삭제해주어야 합니다. 해당 로직도 모두 수정해두었고, 이제 잘 돌아갑니다 허허 Print문 한 백번 찍어가며 확인했으니 이제 Notification 관련해서는 웬만하면 이슈가 발생하지 않을 겁니다..!
📸 Screenshot