heerucan / SSAC-iOS

SSAC 2기 수업/과제 정리
https://bit.ly/3SYL8BQ
1 stars 0 forks source link

[Archive] 6주차 과제 및 TIL #11

Open heerucan opened 2 years ago

heerucan commented 2 years ago

그주에 진행한 과제와 TIL을 여기에 아카이빙합니다.

🥳 프로젝트

🥳 TIL

heerucan commented 2 years ago

8/8 월요일

  1. 코드 간결화 baseURL이 같고, endpoint가 다를 경우에 URL Extension 내에 타입 프로퍼티와 타입 메소드를 통해 처리 enum의 case로 blog, cafe를 나누고, 연산 프로퍼티를 통해 URL Extension에서 만들어 둔 타입 메소드를 사용
    스크린샷 2022-08-08 오후 1 18 28
    스크린샷 2022-08-08 오후 1 18 16


  1. url에 한글이 들어간 경우 인코딩 허용해주기 위해서 사용하는 메소드 query.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)


  1. APIManager에서 @escaping Closure 사용하기 함수가 매개변수로 사용되는 경우에 @escaping 키워드를 통해 함수타입을 가진 매개변수를 외부에서 사용하겠다는 것을 명시해야 한다. APIManager에서도 json을 뷰컨에서 사용하고 싶을 시에, 클로저에 @escaping 키워드를 달아줘야 한다.
    스크린샷 2022-08-08 오후 1 27 41
    별개로, UIAlertController를 띄워주기 위해 Extension에서 함수로 만들어준 부분에서도 마찬가지임. okAction 매개변수를 함수타입으로 해줬고, 외부에서 동작시켜주기 위해서 @escaping 키워드를 붙여줬다.
    스크린샷 2022-08-08 오후 1 39 04


  1. Alamofire는 내부적으로 URLSession이라는 스위프트에서 자체적으로 제공하는 HTTP 네트워크 통신 Framework를 사용하고 이를 통해서 코드가 비동기로 바뀌게 된다. 따라서 서버 통신 코드는 비동기적으로 처리된다. requestBlog() -> requestCafe() 호출하고 싶을 경우에 requestBlog() 함수 내 success 처리 케이스 내부에 호출해주면 순차적으로 불려진다.


  1. 특정 문자열을 다른 문자열로 대체해주는 메소드 .replacingOccurrences(of: "<b>", with: "")


  1. UITableView.automaticDimension 컨텐츠 양에 따라서 테이블 뷰 셀 높이가 자유롭게 조정되려면 조건을 만족해야 하는데 근데 이 경우에 TableView의 프로토콜 메소드에서 적용해줬을 시에 조건2보다 더 우선시된다.
    • 조건 : 레이블 numberOfLines = 0
    • 조건 : tableView.rowHeight = UITableView.automaticDimension
    • 조건 : 레이아웃