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
  • 인기 글

  • 최근 글

  • 태그

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

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

티스토리툴바