[Archive] 6주차 과제 및 TIL
Opened this issue · 1 comments
heerucan commented
그주에 진행한 과제와 TIL을 여기에 아카이빙합니다.
🥳 프로젝트
- 6weekProject, 배운 내용을 기반으로 TMDB 프로젝트에 기능 추가 및 개선하기
- #10
- 8/8 : comment 참고
- 8/9 : cell 안에 cell / 재사용View (재사용 컴포넌트 만들기) xib를 사용해서 만들기
- 8/10 : cell 안의 cell에 데이터 넣기 / prepareForReuse 등
- 8/11 : 위치 권한 (MKMapKit, CoreLocation)
- 8/12 : 카메라, 갤러리, 동영상 권한 (UIImagePickerController, YPImagePicker),
- 8/12 : ClovaAPI 사용해서 이미지 POST (multipart/form-data)
- Weather : Open Weather API 사용하기 - CoreLocation, MapKit 사용 - https://github.com/heerucan/Weather
🥳 TIL
- 8/8 코멘트 참고
- required init : https://roniruny.tistory.com/204
- @IBInspectable, @IBDesignable : https://roniruny.tistory.com/203
- MKMapKit
- CoreLocation - 위치 정보 접근 권한
- UIImagePickerController, YPImagePicker - 카메라 정보 접근 권한
- multipart/form-data
heerucan commented
8/8 월요일
- 코드 간결화
baseURL이 같고, endpoint가 다를 경우에 URL Extension 내에 타입 프로퍼티와 타입 메소드를 통해 처리
enum의 case로 blog, cafe를 나누고, 연산 프로퍼티를 통해 URL Extension에서 만들어 둔 타입 메소드를 사용
- url에 한글이 들어간 경우 인코딩 허용해주기 위해서 사용하는 메소드
query.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
- APIManager에서 @escaping Closure 사용하기
함수가 매개변수로 사용되는 경우에 @escaping 키워드를 통해 함수타입을 가진 매개변수를 외부에서 사용하겠다는 것을 명시해야 한다.
APIManager에서도 json을 뷰컨에서 사용하고 싶을 시에, 클로저에 @escaping 키워드를 달아줘야 한다.
별개로, UIAlertController를 띄워주기 위해 Extension에서 함수로 만들어준 부분에서도 마찬가지임.
okAction 매개변수를 함수타입으로 해줬고, 외부에서 동작시켜주기 위해서 @escaping 키워드를 붙여줬다.
- Alamofire는 내부적으로 URLSession이라는 스위프트에서 자체적으로 제공하는 HTTP 네트워크 통신 Framework를 사용하고 이를 통해서 코드가 비동기로 바뀌게 된다. 따라서 서버 통신 코드는 비동기적으로 처리된다.
requestBlog() -> requestCafe() 호출하고 싶을 경우에 requestBlog() 함수 내 success 처리 케이스 내부에 호출해주면 순차적으로 불려진다.
- 특정 문자열을 다른 문자열로 대체해주는 메소드
.replacingOccurrences(of: "<b>", with: "")
- UITableView.automaticDimension
컨텐츠 양에 따라서 테이블 뷰 셀 높이가 자유롭게 조정되려면 조건을 만족해야 하는데
근데 이 경우에 TableView의 프로토콜 메소드에서 적용해줬을 시에 조건2보다 더 우선시된다.
- 조건 : 레이블 numberOfLines = 0
- 조건 : tableView.rowHeight = UITableView.automaticDimension
- 조건 : 레이아웃