TIL 2024.03.22 PomoHabit App QA중 문제 발생 해결 기록

2024. 3. 22. 19:13TIL

DuringTime 오전 오후 → 24시간 기준

 

1. 오류 주간 캘린더 화면 진입시 날짜& 날짜에 대한 습관정보 계속 해서 추가 되는 현상

Device info

테스트를 진행한 하드웨어 종류 및 iOS 버전을 알려주세요

  • 디바이스명 : 시뮬레이터
  • ios : 16.4

Description

어떤 버그가 생기는지 설명해주세요

  • 주간 캘린더 진입시 날짜가 계속 추가 → 습관정보에 대한 데이터도 계속 추가됨

Steps to reproduce

버그 발생 상황을 단계별로 설명해주세요

  1. 주간날짜를 생성 및 주간날짜에 대한 습관 상태를 viewDidLoad → viewWillAppear로 옮김
  2. 주간날짜/주간날짜에 대한 습관생태 계속해서 추가되는 현상 발생

해결

 private func getWeeklyData() {
        var getWeeklyDates : [Date] = []
        let calendar = Calendar.current
        /*
        생략 하였습니다.
        */
        for i in 0...6 {
            guard let date = calendar.date(byAdding: .day, value: i, to: mondayDate) else { return }
            getWeeklyDates.append(date)
        }
        weeklyDates = getWeeklyDates
    }
  1. 주간 날짜 데이터 생성시 수행되는 함수에 getWeeklyDates 배열을 생성
  2. getWeeklyDates에 데이터 대입
  3. getWeeklyDates 배열을 weeklyDates에 대입

함수가 실행될때마다 초기화 되는 getWeeklyDates를 이용해서 중복으로 추가되는 현상 방지

 private func getWeeklyHabitState() {
        do {
            var getWeeklyHabitState: [HabitState] = []
            for date in weeklyDates {
                let dateHabitState = try CoreDataManager.shared.getSelectedHabitInfo(selectedDate: date).map{$0.hasDone}
                let currentDate = Date()
                /* 해당 함수에 대한 로직은 변화가없으로 생략하였습니다.
                */
                }
            weeklyHabitState = getWeeklyHabitState
        } catch {
            print(error)
        }
    }
  1. 주간 날짜 데이터에 대한 습관 생성시 수행되는 함수에 getWeeklyHabitState 배열을 생성
  2. getWeeklyHabitState에 데이터 대입
  3. getWeeklyHabitState 배열을 weeklyHabitState에 대입

함수가 실행될때마다 초기화 되는 getWeeklyHabitState를 이용해서 중복으로 추가되는 현상 방지

2. 오늘 습관 완료시 변경 된 변경된 데이터 적용 안되는 현상

Device info

테스트를 진행한 하드웨어 종류 및 iOS 버전을 알려주세요

  • 디바이스명 : 시뮬레이터
  • iOS 버전: 16.4

Description

어떤 버그가 생기는지 설명해주세요

  • 오늘 습관 완료시 주간 캘린더에 습관 완료 표시 적용되지 않는 문제

Steps to reproduce

버그 발생 상황을 단계별로 설명해주세요

  1. 오늘 습관 완료시 주간캘린더에 변경사항 적용이 되지않음

Screenshots

버그가 발생한 화면명을 알려주세요

  • WeeklyCalendarView

문제점 및 수정사항

문제점 발견 : viewDidLoad에 데이터를 받아오기 때문에 한번 실행되면 다시 실행되지 않는다.

해결 방법

  1. 데이터를 불러오고 View를 설정하는 함수 viewDidLoad → viewWillAppear로 이동
override func viewDidLoad() {
        super.viewDidLoad()
        
        getWeeklyData()
        setWeeklyCalendView()
        getTargetHabit()
        getWeeklyHabitState()
        setWeeklyHabiState()
    }
 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        getWeeklyData()
        setWeeklyCalendView()
        getTargetHabit()
        getWeeklyHabitState()
        setWeeklyHabiState()
    }
  1. 주간 캘린더 주간 습관 진행 상태를 나타내는 weeklyHabitState 배열 변경 생기면 주간 캘린더 weeklyCollectionView를 reload
var weeklyHabitState: [HabitState] = [] {
        didSet {
            weeklyCollectionView.reloadData()
        }
    }

'TIL' 카테고리의 다른 글

[TIL] 2024.02.26  (2) 2024.02.26