Skip to content

20201203 개발 진행 상황

songju edited this page Dec 6, 2020 · 1 revision

지출 화면 TravelItemViewModel 적용

  • DummyHistory 구조체 및 코드 삭제
    • 실제 TravelItemViewModel 적용

지출 화면 상단 요소 구현

  • View 구성 (NavigationBar, Tabbar 제외)

여행 날짜 스택뷰 구현 (우측 상단)

  • 우측 상단 stackView에는 Custom DayCell이 들어감
    • 여행 날짜에 종속적으로 셀을 생성하여 삽입
  • 터치 액션은 Delegate 패턴을 활용하여 view가 VC에 알려주는 방식으로 구현
    • sender에 터치된 UIButton을 담아서 보내면 stackView 내부의 같은 버튼을 찾아서 date 필터
    • 추후에 selected button에 accessary 표시 예정

여행 준비 비용 필터 구현 (좌측 상단)

  • UIStackView 내부에 두가지 UIButton을 넣어 구현
  • 날짜 스택뷰와 마찬가지로 추후에 selected button에 accessary 표시 예정

금액 타입 필터 구현

  • UISegmentedControl을 활용하여 구현
  • setTitleTextAttributes 메소드를 활용하여 normal, selected의 텍스트 속성 변경

지출 화면 테이블뷰 필터 구현

  • 고려해야 할 사항
var isPrepared: Bool?
var date: Date?
var isCard: Bool?
  • 크게 총 18가지 경우의 수를 따지기 위한 filter 함수 구현 (모듈로 뺄 예정)
// pseudo code
func filterHistories(isPrepared, date, isCard) -> histories {
    histories = 전체 histories
    if isCard != nil {
        histories = histories 중 isCard가 동일한 기록들
    }
    if isPrepared != nil, isPrepared == true) {
        histories = histories 중 isPrepared가 동일한 기록들
    } else if date != nil {
        histories = histories중 date가 동일한 기록들
    }
    return histories
}
  • 금액 타입 -> 준비 비용 -> date 여부 순서로 필터링 후 applySnapshot 진행

날짜 형식 관련 이슈..

  • Swift 기본 Date initializer는 국정 표준시(UTC)를 기준으로 생성
  • 하지만 커스텀으로 구현한 Date to String converter는 한국 시간 기준으로 변환
  • 뷰에 뿌려지는 값과 실제 값의 차이로 인한 문제가 생김
  • 관련 기록

지출 상세화면 구현

  • 지출 목록 화면에서 셀 선택 시, 지출 상세화면을 present 하도록 구현
  • 데이터 모델 연결 작업 필요

지출 추가 화면

  • UIRefreshControl을 적용하여 테이블 셀을 아래로 스와이프 하여 지출 항목을 추가할 수 있도록 구현
  • 지출 추가 화면으로 전환될 때 BaseDataForAddingHistory 구조체를 만들어 화면 구성을 위한 정보를 전달
struct BaseDataForAddingHistory {
    var isIncome: Bool
    var flagImage: Data
    var currencyCode: String
    var currentDate: Date
    var exchangeRate: Double
}

기능 구현

  • NSExpression을 활용하여 지출 금액 입력 계산 구현
  • 계산식 파싱 중 123.123.12 와 같이 소수점이 한 숫자 내에 두번 이상 나오는 경우 crash
    • Operator를 기준으로 String을 잘라서 숫자만 남긴 후, 각각의 숫자가 소수점을 한번 이하로 포함하는지 검사하는 방식으로 해결
  • 이미지, 메모, 타이틀, 날짜 저장 기능 구현
  • 카드/현금 여부와 카테고리 지정 기능 구현 예정
  • 지출/수입을 하나의 xib로 대응할 수 있는 present extension 구현 예정

BoostPocket 🏖

🤝 규칙
🔖 프로젝트 상세
📝 회의
🏃 1주차 데일리스크럼
🏃 2주차 데일리스크럼
🏃 3주차 데일리스크럼
🏃 4주차 데일리스크럼
🏃 5주차 데일리스크럼
👨‍👨‍👧‍👦 피어세션
🗣 팀 회고

📱 개발 진행 상황
🧐 학습
❓ Trouble Shooting
Clone this wiki locally