- 당일 공연 추첨식 예매 서비스
'골든티켓'은 공연 티켓 응모 서비스 입니다. 당일 남은 좌석에 대한 응모를 통해 당첨자는 가장 저렴한 가격에 공연을 관람할 수 있습니다. 오늘 응모 가능한 공연을 둘러보고 행운을 경험해보세요.
- 개발 기간
2019.06.22 ~ 2019.07.13
- Swift 버전
- 5.0.1
- 사용한 라이브러리
- Alamofire 4.8.2
- Kingfisher 4.10.1
- Hero
- SwiftOrigin 1.7.0
- SideMenu
- TextFieldEffects
기능 | 개발 여부 | 기타 사항 |
---|---|---|
로그인/회원가입 | ○ | 로그아웃, 회원정보 수정까지 구현 완료 |
홈 공연정보 보여주기 | ○ | |
공연 상세 정보 보여주기 | ○ | |
응모하기 | ○ | |
응모한 공연 시간 정보 보여주기 | ○ | |
당첨 확인 | ○ | |
관심있는 공연 설정 | ○ | |
알림 (관심있는 공연 / 당첨확인) | X : 개발자 계정이 없어 apns 이용 불가 | |
검색 | ○ | 일반 텍스트 검색, 해쉬태그 검색 |
- alamofire 비동기화로 인해서 서버 통신이 진행 중일때 데이터를 nil 값을 받아오는 경우가 발생할 수 있다.
- 서버 통신할 때 데이터 갱신은 반드시 통신 함수 안에서 진행해야 한다.
- 예시 1.
공연 상세 페이지의 데이타를 셋팅하는 collection view에서 서버를 통해 데이터 셋팅하는 함수 setDetailData를 호출만 하고
setDetailData 함수 안에서 dvc의 셀의 데이타를 셋팅한다.
- response의 result가 Json으로 decode할 수 없을 때 해결을 위해 시도했던 방법들
- print(type(of: result))로 디코드를 시도하는 value의 타입을 찍어보고
- print(error.localizedDescription로 에러를 출력해보고
- debugPrint(error)로 어떤 키가 missing된 건 아닌지 확인한다. 이 과정에서 response data handler, chained response handlers 사용 방법을 참고했다.
- 참고 URL : Alamofire/Documentation/Usage.md
- Response Data Handler
Alamofire.request("https://httpbin.org/get").responseData { response in
debugPrint("All Response Info: \(response)")
if let data = response.result.value, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
- Chained Response Handlers
Alamofire.request("https://httpbin.org/get")
.responseString { response in
print("Response String: \(response.result.value)")
}
.responseJSON { response in
print("Response JSON: \(response.result.value)")
}
- 공연 상세 뷰의 셀 이미지가 두번째 클릭부터 로드 되는 문제점
- dvc의 image 속성을 UIImageView?가 아닌 UIImage?로 선언하여 해결했다. 따라서 이미지 url 메소드 불러올 때도 kingfisher의 imageFromURL을 사용하지 않고 직접 image URL을 받아 UIImage에 대응해주었다.
[문제4 해결이미지]
[문제4-1 해결이미지]
- 팀원1 : 안재은
SOPT 24기 appjam에서 '골든티켓' 이라는 서비스로 두 번째 iOS 애플리케이션 개발을 하게되었습니다.
좋은 팀원들 만나 많이 성장 할 수 있었습니다. 골든티켓 파이팅 !!
- 팀원2 : 황수빈
졸리다.. (19.07.10.)
생각 이상으로 사용자 입장에서 플로우를 디테일하게 고민해보는 시간이었고
SOPT 24기 YB로 앱잼에 참여하면서 들어왔던 8번의 세미나를 종합하고 발전하는 기회였습니다.