23.09.01 금

2023. 9. 1. 21:40·Study/🌱 SeSAC

 

화면 전환 시 서버 통신

  1. 화면 전환 시 서버 통신 후 값 전달화면 전환할 때 응답을 받은 후 전환해야 하기 때문에 사용자 입장에서 불편함을 느낄 수 있음(속도)
  2. 통신에 실패할 시 얼럿 등의 메세지를 띄우는 대처 필요
  3. 화면 전환 후 viewDidLoad
  4. 통신 실패 화면을 준비하는 것이 필요하다

💡 URL Session

타임아웃 시간 걸기

let request = URLRequest(url: url!, timeoutInterval: 10)

Untitled.png

error가 발생하지 않는다면 error 값은 nil일 것이다.

let result = try? JSONDecoder().decode(, from: data)

오류가 발생했을 때 result에 nil값이 들어가버리면 어디에서 문제가 발생했는지 알 수 없다.

let result = try! JSONDecoder().decode(, from: data)

runtime error 발생

오류를 대처하기 위해 do try catch문을 쓰는 것이 적합함!

 

✅ 데이터 응답 진행률

스크린샷_2023-09-01_오전_10.46.44.png

→ 총 데이터의 양은 content-length에 담겨 있음

 

스크린샷_2023-09-01_오전_11.02.33.png

총 데이터 크기 가져오기

 

Untitled.png

서버에서 데이터 받을 때 마다 buffer에 추가해주기

 

Untitled.png

data타입의 프로퍼티 생성 후 didSet 프로퍼티 활용하여 값이 추가될 때 마다 진행률을 계산

 

진행률 소수점 첫째자리까지 보여주기

String(format: "%.1f", result * 100)

 

 

리소스를 다 받았으면 이미지 보여주기

스크린샷_2023-09-01_오전_11.12.59.png

 

카카오톡 사진 다운로드: 다운로드 중에 다른 채팅방으로 넘어가면? 취소버튼?

Untitled.png


api 통신 에러 핸들링

Untitled.png

completionHandler에 nil 값이 들어오게 된다면 문제가 생긴 것

→ 구현 시 nil값을 받게 되면 alert창을 띄우는 등 에러에 대한 뷰를 구성하여 처리를 하도록 하자

 

 

Untitled.png

api 통신이 완료되기 전에 collection view가 만들어진다.

 

 

Untitled.pngUntitled.png

네트워크 통신의 횟수가 많고 반복적이라면 호출할 때 마다 DispatchQueue에서 main에게 요청하기 보다는 completionHandler 내에서 DispatchQueue를 수행하는 것이 더 효율적일 것!

 

 

Untitled.png

 

 

링크 기반으로 이미지를 보여주는 것은 네트워크 통신 과정이다.

링크를 데이터 타입으로 변환하는 과정은 용량이 클 때 시간이 오래걸릴 수 있기 때문에 글로벌 비동기 처리를 하도록 구현한다.

Untitled.png

데이터 타입 변환이 끝나면 이미지를 보여주는 과정은 main이 처리하도록 한다.

 

네트워크 통신은 비동기 환경에서 해야한다.

데이터를 받거나 이미지 로드 등

'Study > 🌱 SeSAC' 카테고리의 다른 글

23.11.01 수  (1) 2023.11.01
23.10.31 화  (1) 2023.11.01
23.08.31 목  (1) 2023.09.01
23.08.30 수  (0) 2023.09.01
23.08.29 화  (0) 2023.08.31
'Study/🌱 SeSAC' 카테고리의 다른 글
  • 23.11.01 수
  • 23.10.31 화
  • 23.08.31 목
  • 23.08.30 수
김졀니
김졀니
🍎 iOS 개발
  • 김졀니
    졀니의 개발 공부✨
    김졀니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • iOS
        • Swift
        • UIKit&SwiftUI
        • RxSwift&Combine
        • WWDC
      • Study
        • 🚨 TroubleShooting
        • 🌱 SeSAC
  • 블로그 메뉴

    • 홈
    • Github
  • 인기 글

  • 최근 글

  • 태그

    layoutIfNeeded
    인앱리뷰
    mapkit
    동시성프로그래밍
    @PropertyWrapper
    traits
    swiftdata
    FileManager
    mainactor
    ios
    위치 권한
    displayPriority
    swift concurrency
    actor
    observable
    이미지 캐싱
    Sendable
    RxSwift
    의존성 주입
    concurrency
    OperationQueue
    pointfree
    CLLocation
    Drawing Cycle
    ReactorKit
    Realm
    Swift
    kingfisher header
    wwdc23
    clipstobounds
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
김졀니
23.09.01 금
상단으로

티스토리툴바