코드 간결화
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
그주에 진행한 과제와 TIL을 여기에 아카이빙합니다.
🥳 프로젝트
🥳 TIL