Swift 문법을 응용해서 키오스크 프로그래밍 하기
구현 사항 확인 후 어떤 키오스크 프로그램을 만들지 협의를 진행했다.
예시는 패스트푸드점 키오스크였는데, 우리팀은 영화관 키오스크로 결정했고 어떤 항목들이 있어야 하는지 노션에 정리하였다.
콘솔창만 사용하여 키오스크를 구현해야하기 때문에 각자 노션에 정리된 기능들을 틀만 작업하여 깃에 푸시했다.
각자 작업한 코드를 화면공유를 통해 리뷰하였고, 가장 효율적으로 작성된 코드를 main으로 역할을 분담했다.
(1) 화면에 보이는 번호 외 입력 시 오류 메세지 출력, 재입력
(2) (1)과 동일
(3) 최대 예매 가능인수 지정
(4) 입력값 검증(문자숫자 조합), 예매인수와 동일한 갯수의 입력값 확인, 예매완료된 좌석은 입력값으로 받을 수 없음
(5) 입력값 형태 검증(숫자, -구분자)
(6) Y/N 입력값 검증
(7) 예매내역 없을 시 없다는 문구와 함께 메인으로 돌아가는 기능
좌석을 선택할 때 A1 처럼 문자와 숫자로만 이루어져야 하니까 입력값의 패턴을 지정할 수 있다.
해당 검증은 Swift 정규식(참조 블로그)을 이용해서 확인할 수 있다.
아래 코드는 입력된 문자열에 정해진 패턴에 맞는지 검사하는 함수이다.
func validateSelectedSeat(_ input: String) -> Bool {
let pattern = "^[A-C][1-4]$"
let regex = try! NSRegularExpression(pattern: pattern)
let range = NSRange(location: 0, length: input.utf16.count)
return regex.firstMatch(in: input, options: [], range: range) != nil
}
🥲 유효성 검사 (4)를 진행하면서 어려웠던 점
- updatedSeat이 while문 안에 있으니까 선택한 좌석이 잘못 입력되어 수정해도 처음 입력한 값이 저장되어 있어서 오류 발생
- 상기 오류는 결제 완료시에 저장되도록 위치를 변경
- 예매 인원 수를 2명으로 예매하고 좌석을 선택하면, 해당 좌석이 선택되어 있는데도 불구하고 자꾸 결제로 넘어가는 문제 발생
- 입력값을 구분자 띄어쓰기 " "가 있는 String으로 인식하고 구분자를 기준으로 쪼개 배열에 저장하고 좌석을 입력 받을 때 해당 배열에 이미 존재하는지 확인하는 함수를 만들어서 검증하게 했다.. 진짜 힘들었다...