210520 Thu
1. 첫 번째 학습 내용: Result
Generic Enumeration
Result
A value that represents either a success or a failure, including an associated value in each case.
result는 뭘로 받을지 타입을 정해야함
func fetchItemListData(completion: @escaping(_ result: Result <MarketItemList, Error>) -> Void) {
MarketItemList가 바뀔 때마다 다른 fetchItemListData 메소드가 필요함
MarketItemList를 제네릭으로 만들면
재사용성이 올라간다
비슷한 메서드를 만들지 않아도 된다.
2. 두 번째 학습 내용: Unit Testing URLSession using URLProtocol
Step1 테스트
- 가상의 API에 접근한다고 가정했을 때 서버에서 가져온 데이터가 json 데이터와 일치하는지 여부를 확인
- 테스트에서 requestHandler는 서버 역할
- URLRequest를 받은 다음에 (가상의) 응답과 데이터를 받음
- 이후 requestData(가지고 있는 API 데이터)와 responseData(통신된 값)을 비교하여 일치 여부를 확인
제임스 레슨
똘똘한 제임스가 레슨해줬다 👍
URLSession
Types of URL Sessions
- singleton shared session
- default session (환경 설정 해줄 수 있음), delegate한테 위임 가능
- Ephemeral sessions (caches, cookies, credentials 남기지 않음)
- Background sessions
URLProtocol에서는 처리하는거를
URLProtocol subclass가 함
이거랑 비슷하게
Mock Protocol을 만듦
가상의 URLProtocolClient에게 전해줌
custom API를 하나 만듦
저장하고 retrieve할 수 있음 protocol-specific request data를
데이터 테스크에서 가져오면
URLResponse를 만들 수 있음
creating protocol objects
canInit
canonicalRequest (canonical: 적합한) → 보낸 request가 적합한건지 판단
startLoading
requestHandler → 서버 역할을 함
: URLRequest를 받은 다음에 (가상의) 응답과 데이타를 반환
handler를 만들어서
옵셔널이니까 guard let을 해주고
request handler가 throws니까
do문을 써가지고
handler를 통해서 리퀘스트를 받은 다음에
response, data랑 같은지 확인
requestHandler가 throw를 하니까
do let에서 handler를 try함
client = 커뮤니케이션 하는 애
data = 옵셔널 타입 (Data?)으로 지정
guard let data = data 확인
do catch문 쓴 이유
→ 에러가 있으면 catch에서 걸러내겠다
catch가 없으면
try 했는데 잘 안받아질 경우를 대비해서
try? 물음표 붙여짐
handler(request)를 통해서 response, data를 받으려고 했는데
문제가 생기면
nil값을 반환할거야
do catch를 안쓰면 이렇게 try? 물음표 붙임
Author And Source
이 문제에 관하여(210520 Thu), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunnywhynot/210520-Thu저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)