- 기간 : 23.03.30 ~ 23.04.14
- 100% 코드 (UIKit)
- MVVM 패턴
- Firebase
- SDWebImage
- JGProgressHUD
문제 상황 :
- 프로필 사진을 바꾸려고 하면, 업데이트 되지 않고 새로운 이미지가 저장됨
- 이미지가 3개 이상 업로드 된 상태에서 이미지를 변경하려고 하면, fatal error 발생
파악 과정 :
- 기존에 업로드 된 프로필 사진을 변경-저장하는 경우, 기존의 이미지가 update되지 않고 새로운 이미지로 추가됨을 발견했습니다.
- Firestore에서 해당되는 유저의 imageURL 정보 확인 - 저장 버튼을 누르면, 기존 이미지 url배열의 요소 갯수가 증가되는 것을 확인했습니다.
- 저장 버튼을 누르지 않은 경우 - 버튼의 view가 정상적으로 변경됨을 확인했습니다.
- imageURLs의 배열 갯수를 count 하자, 해당 전역변수의 count가 증가한 것을 확인했습니다.
- imagePickerController(...didFinishPickingMediaWithInfo: ) 함수에서 호출된 메서드가 잘못됨을 인지했습니다.
- 호출되는 함수를 보니, imageURLs 배열에 새로운 요소를 append하고 있기에, 새로운 요소가 추가만 되고 기존의 요소를 변경하는 로직은 구현되지 않음을 인지할 수 있었습니다.
- 버튼에 이미지가 있는 경우, 버튼의 index값을 인자로 받아서 해당되는 index의 imageURL을 새로운 URL로 대치하는 함수를 생성했습니다. updateImage(image: UIImage, index: Int)
- 기존 버튼에 이미지가 있을 경우 / 없을 경우를 분기처리 했습니다.
- 기존 버튼에 이미지가 있는 경우 : 기존에 사용했던 uploadImage() 함수 사용
- 기존 버튼에 이미지 없는 경우 : updateImage(image: UIImage, index: Int) 함수 사용
- MVVM 디자인 패턴을 익혔으며, 차후 프로젝트에서도 사용하면서 더욱 이해도를 높일 예정입니다. (view를 최대한 멍청하게..!)
- Firestore에 데이터를 구축하고 저장, 업로드, 업데이트 하는 법을 배웠습니다.
- Firestore에 저장된 두 데이터를 비교하는 법을 배웠습니다.
- Firebase Auth를 통해 유저 로그인, 로그아웃을 구현하는 법을 배웠습니다.
- Delegate Pattern을 자신있게 사용할 수 있게 되었습니다.
- CollectionView의 사용법을 익혔습니다.
- 재사용성이 높은 코드를 작성하여 반복되는 코드를 줄이는 법을 배웠고 앞으로 활용할 예정입니다.
- 생소했던 UIPanGestureRecognizer 사용하는 방법을 알 수 있었습니다.
- 로그인 / 회원가입 / 로그아웃
- Swipe 제스처와 버튼을 이용한 좋아요, 싫어요 기능
- 프로필 수정 (프로필 사진 변경, 이름 변경, 검색 나이 범위 변경 등)
- 유저 검색 필터 기능 (설정한 검색 나이 범위에 해당되는 유저만 목록에 표시)
- 매칭 기능 (서로 좋아요 한 경우, 매칭 화면 present하기 및 messageView에 매칭된 유저 리스트 띄우기)
! Simulator Screen Recording - iPhone 14 - 2023-04-14 at 16 47 59