[iOS] 시간표 프로젝트 - 11

한지석·2022년 3월 6일
0

iOS

목록 보기
11/12

이번 포스팅은 시간표 정보를 어떻게 만들었는지에 대한.. 포스팅이다!

시간표 정보

굉장히 간단한 화면이지만, 동시에 가장 많은 코드를 가지고 있는 파일이다 ..

해당 화면에서 처리해야 하는 기능

  1. 강의 추가
  2. 시간표 중복 확인(이 기능때문에 머리 빠질뻔 했다.)
  3. 시간표 수정

1. 시간표 추가

이 기능은 비교적 쉽게 완성했다. 사실 처음에는 감도 안잡혔긴 한데, 내가 사용한 방법은
1. 완료 시 데이터베이스에 강의 데이터를 삽입한다.
2. 시간표 화면에서 데이터베이스를 받아온 후 배열에 추가한다.
3. 이후 시간표 화면으로 push
이런 로직으로 기능을 완성했다 ! 하지만 나에게 닥쳐올 시련은 모른채 ..

2. 시간표 중복

먼저, 이 기능을 구현하면서 든 생각이
1. 코드를 구현하기 전에 설계를 완성해야 한다.
2. 유지보수는 못생긴 코드에 대해 할 수 없다.(사실상)
3. 어제의 나는 제발 생각좀 하고 코드를 짜자..

구현하면서 생각이 계속 바뀌어서 뒤집지도 못하고, 보기도 안좋고,, 심지어 나도 모르겠는 네이밍도 많았다.(최악의 경우)
하나 배운점은.. 설계를 잘 하고 시작하는게 좋겠다. 라는 생각(코드부터 작성하지말고 미리미리 경우의 수를 계산한 후 코드를 작성하자)

왜 위와 같은 생각이 들었는가. 라고 한다면 강의 데이터가 너무 다양했다.(생김새가 다 똑같지 않았음)
여러 요일에 걸친 수업(최대의 변수)이 있었다. 일반적인 시간표는 월 1,2,3 화 4,5,6 이런식이라 하면
월 1,2 화 3,4 수 5,6 처럼 되어있는 데이터도 있고, 장소가 달라 구분되어있는 데이터도 있고,, 다양했는데 전혀 생각하지 못했다. 그러면서 코드를 계속 수정하고, 쉽게 말해 정신 나갈뻔 했다.

경우를 여러개로 나눴다.
1. 일반적 강의 데이터
2. 장소가 나뉘어진 강의 데이터
3. 요일이 다른 강의 데이터
3.1 요일이 두 개인 강의 데이터
3.2 요일이 세 개인 강의 데이터

이 경우의 수를 앞으로는 코드를 작성하기 전에 생각하자 !
중복 로직은 추가하려는
1. 강의의 시작 시간이 기존에 있는 데이터 사이에 있다.
2. 강의의 종료 시간이 기존에 있는 데이터 사이에 있다.
3. 강의의 시작 시간 or 종료 시간이 기존 데이터와 일치한다.
라는 로직으로 세웠다.
나는 처음엔 데이터베이스에 있는 데이터를 변수로 가져와, 정수형으로 바꾼 후에 정수의 크기를 비교해주는 방법을 사용했다. 일반적 강의 데이터만 생각한 것이다.
이후 데이터베이스에 있는 데이터를 배열에 추가한 후, 정수형으로 바꾼 후에 크기를 비교해주었다.(이 안에서도 다양한 경우가 있었음)
포스팅에 작성하기엔 너무 어렵다 ..
정말 머리 깨지면서 만든 결과 시간표가 중복된다면..

위와 같이 유저에게 친절하게 알려준다.^^(그에 비해 나에겐 친절하지 않은 코드)

3. 시간표 수정

위 기능을 만들때도 많이 좌절했다. 중복 체크를 어떤식으로 해줘야 할 것이며,, 시간표 화면에서 수정하는 경우와 시간표 추가할 때의 경우가 다르기 때문에 ..
1. 시간표 추가 화면에서 수정하는 경우

먼저 시간표 추가 화면의 데이터를 모두 수정 화면으로 넘겨주었고, 유저가 선택하는 시간을 고정 시켜주었고(다른 데이터를 입력하지 못하게 하기 위함), 수정된 데이터를 다시 시간표 정보로 넘겨주었다.

2. 시간표 화면에서 수정하는 경우

이 경우가 조금 머리아팠는데, 그 이유는 유저가 수정 버튼을 누른 후에 시간표 추가하기 직전에 취소해버릴 수도 있기 때문이다..
모든 유저가 내가 원하는대로 앱을 사용해줬으면 좋겠지만, 실제로는 그렇지 않기 때문이다 !
또한 시간표 화면에 있는 데이터는 시간표 추가 시에 있는 데이터와는 달라서 모든 데이터를 넘겨줄 수 없는 점도 있었다.(크게 문제되진 않음)
나는 위처럼 완료 버튼을 누르지 않는 유저들을 위한 장치를 만들었고(매우 간단) 조건문에서 확인을 해서, 수정하는 경우 두가지 중에 어떤 경우인지를 판별해주었다.

(아 물론 ! 삭제도 된다 ^^) 이런식으로 장소를 바꿀 유저도 분명히 있기에,, 시작 시간을 내가 원하는대로 입력해줄거란 기대를 버렸다 !

이런식으로.. 만들어 보았다.. 주변에 iOS 개발자가 있다면.. 많은 도움을 주고싶다..(너무 외로운 싸움을 하고있다..)

이번 포스팅은 여기까지 !

profile
한지석일대기

0개의 댓글