🌱 SeSAC

[SeSAC] 220804 TIL

taeeekki 2022. 8. 10. 17:24

μ„œλ²„ 톡신 μ‹œ 셀에 보여쀄 UIImage λ³€ν™˜ μ‹œμ 

urlString β–ΆοΈ url β–ΆοΈ image

url둜 λ°”κΎΈκ³  λ˜λŠ” image둜 λ°”κΎΈλŠ” 과정을 μ–΄λ””μ—μ„œ μ§„ν–‰ν•˜λŠ” 것이 μ’‹μ„κΉŒ?

  1. μ„œλ²„ 톡신 μ‹œμ μ—μ„œ ν• μ§€ => μ‹œκ°„μ΄ 였래걸리고, μ‚¬μš©μžκ°€ 보지 μ•Šμ„ 수 μžˆλŠ” 정보에 λŒ€ν•΄μ„œλ„ μž‘μ—…μ„ μ§„ν–‰ν•  수 μžˆμ–΄μ„œ λΉ„νš¨μœ¨μ 
  2. μ…€μ—μ„œ μ²˜λ¦¬ν• μ§€ => 쑰금 더 μ μ ˆν•΄λ³΄μΈλ‹€.

λ§ˆμ°¬κ°€μ§€λ‘œ μ„œλ²„ 톡신을 μ…€μ—μ„œ ν•  경우 셀이 κΊΌλ‚΄μ§ˆ λ•Œλ§ˆλ‹€ μš”μ²­μ΄ λ“€μ–΄κ°€ call μˆ˜κ°€ 증가할 수 μžˆλ‹€.

 


 

 

Alamofire의 데이터 λ°›μ•„μ˜€λŠ” λ©”μ„œλ“œ(Response Handler)

 

// Response Handler - Unserialized Response
func response(queue: DispatchQueue = .main, 
              completionHandler: @escaping (AFDataResponse<Data?>) -> Void) -> Self

// Response Serializer Handler - Serialize using the passed Serializer
func response<Serializer: DataResponseSerializerProtocol>(queue: DispatchQueue = .main,
                                                          responseSerializer: Serializer,
                                                          completionHandler: @escaping (AFDataResponse<Serializer.SerializedObject>) -> Void) -> Self

// Response Data Handler - Serialized into Data
func responseData(queue: DispatchQueue = .main,
                  dataPreprocessor: DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor,
                  emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes,
                  emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods,
                  completionHandler: @escaping (AFDataResponse<Data>) -> Void) -> Self

// Response String Handler - Serialized into String
func responseString(queue: DispatchQueue = .main,
                    dataPreprocessor: DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor,
                    encoding: String.Encoding? = nil,
                    emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes,
                    emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods,
                    completionHandler: @escaping (AFDataResponse<String>) -> Void) -> Self

// Response Decodable Handler - Serialized into Decodable Type
func responseDecodable<T: Decodable>(of type: T.Type = T.self,
                                     queue: DispatchQueue = .main,
                                     dataPreprocessor: DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor,
                                     decoder: DataDecoder = JSONDecoder(),
                                     emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes,
                                     emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods,
                                     completionHandler: @escaping (AFDataResponse<T>) -> Void) -> Self

 

1. response

2. response<Serializer: DataResponseSerializerProtocol>

3. responseData

4. responseString

5. responseDecodable

6. responseJSON : ν•΄λ‹Ή λ©”μ„œλ“œλŠ” Alamofire 6 λΆ€ν„° deprecated λΌμ„œ 곡식 λ¬Έμ„œμ—λŠ” μ‚¬λΌμ‘Œλ‚˜λ³΄λ‹€.

 


 

Serialization, Deserialization

Serialization

  • 직렬화
  • Encoding
  • μ™ΈλΆ€μ—μ„œ μ•Œμ•„λ“€μ„ 수 μžˆλŠ” ν˜•νƒœλ‘œ λ³€ν™˜

Deserialization

  • 역직렬화
  • Decoding
  • μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” ν˜•νƒœλ‘œ λ³€ν™˜

 


 

Pagination

swiftμ—μ„œ κ΅¬ν˜„ν•˜κΈ°

  1. will display cell 이용
  • 셀이 κ·Έλ €μ§€κΈ° 전에 호좜, μ‹€μ œ 셀을 κ·Έλ €μ£ΌλŠ” 역할은 cell for row at이 함
  • μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•  수 있음
  1. scrollView의 scroll μ‹œμ  이용
  • 많이 μ“°μ΄λŠ” 방식
  • contents의 끝에 λ„μ°©ν–ˆμ„ λ•Œ delegate methodλ₯Ό ν˜ΈμΆœν•΄μ„œ μ μ ˆν•œ 처리λ₯Ό ν•΄μ£Όλ©΄ 됨
  • contentSize, contentOffset κ°œλ…μ„ 이해해야 함
  1. DataSourcePrefetching ν”„λ‘œν† μ½œ 이용
  • κ°€μž₯ μ ν•©ν•œ 방식에 κ°€κΉŒμ›€
  • μž‘μ—… μ·¨μ†Œ κΈ°λŠ₯도 포함 (λ§Œμ•½ μ‚¬μš©μžκ°€ μŠ€ν¬λ‘€μ„ λ„ˆλ¬΄ 빨리 ν•œλ‹€λ©΄ 쀑간 쀑간 μ·¨μ†Œλ₯Ό ν•˜λŠ” 것이 효율적일 수 있기 λ•Œλ¬Έμ— μ μ ˆν•œ 상황에 μ΄μš©ν•˜κΈ°)

 


 

ν΄λ‘œμ €

  • 이름이 μžˆλŠ” ν•¨μˆ˜ = λ©”μ„œλ“œ ν•¨μˆ˜
  • 이름이 μ—†λŠ” ν•¨μˆ˜ = ν΄λ‘œμ € ν•¨μˆ˜

 


+ ν•„κΈ°ν•œ 것