[Alamofire 소스 분석] 02 - AFError & Notifications & DispatchQueue + Alamofire
1. AFError 개요
저자는 우선 전체 프로젝트에서 만나는 error를
AFError
매거에 집중했다.원본 코드에서 알 수 있듯이 프로젝트에서 만나는 error는 다섯 가지가 있는데 그것이 바로 AFError
의case입니다. 각각case는 하나의 관련 값을 가지고 있습니다. (무엇이 관련 값입니까>>)우리는 Swift 매거진의 관련 값 특성을 이용하여 오류가 발생했을 때 어떤 종류의 값도 연결합니다.예를 들어 이 오류case invalidURL(url: URLConvertible)
라면 여기에 URL이 연결되어 있습니다. 그러면 error를 만났을 때 어느 URL이 비합법적인지 알려줄 수 있습니다.다른 네 개의 케이스와 관련된 것은 AFError
안에 내장된 enum 형식 (Swift 허용 형식 삽입) 으로 더욱 구체적인 오류 원인을 알려줄 수 있다.public enum AFError: Error {
//
public enum ParameterEncodingFailureReason {
}
//
public enum MultipartEncodingFailureReason {
}
//
public enum ResponseValidationFailureReason {
}
//
public enum ResponseSerializationFailureReason {
}
//
case invalidURL(url: URLConvertible)
case parameterEncodingFailed(reason: ParameterEncodingFailureReason)
case multipartEncodingFailed(reason: MultipartEncodingFailureReason)
case responseValidationFailed(reason: ResponseValidationFailureReason)
case responseSerializationFailed(reason: ResponseSerializationFailureReason)
}
2. AdapterError
이것
AdapterError
은 RequestAdapter
을 위해 전문적으로 서비스하는 것이다.여기에서 먼저 간단하게 소개합니다
RequestAdapter
: RequestAdapter
는 프로토콜입니다. 우리는 요청 어댑터를 사용자 정의하고 이 프로토콜을 따를 수 있습니다.사용자 정의 어댑터를 통해 요청을 보낼 때 요청과 관련된 데이터를 기본적으로 추가할 수 있습니다. 구체적으로 보십시오: [Alamofire 원본 해석] 08 - Request.AdapterError
는 적합성을 요청하는 과정에서 발생할 수 있는 오류의 구조 유형이다.Error
의 extension에서 정의된 underlyingAdaptError
은 적합 과정에서 발생할 수 있는 오류입니다.3. Error Booleans
여기에 사용하기 편리한 읽기 전용 속성을 정의하여 우리가 개발할 때 판단하는 데 편리하다.사실 우리의 개발에서도 일부 판단을 읽기 전용 속성이나 Bool로 되돌리는 방법으로 자주 쓴다.이것은 코드의 가독성을 높이는 매우 좋은 습관이다.Swift에서 애플은 이미 습관적으로 Bool 유형의 속성을
is
로 시작하여 이름을 지었는데, 나도 개인적으로 is
으로 시작하여 이름을 지으면 가독성이 더욱 높아질 것이라고 생각한다.extension AFError {
public var isInvalidURLError: Bool {
if case .invalidURL = self { return true }
return false
}
// Error Booleans ...
}
4. Convenience Properties
이 부분의 내용은 사용하기 편리한 error와 관련된 속성으로 특별한 것이 없습니다.
5. Notifications
Notifications 이 파일은 확장
Notification.Name
을 통해 프로젝트에 사용할 알림 이름을 정의합니다.우리는 이 형식으로 정의하는 것을 배울 수 있다rawValue
: org.alamofire.notification.name.task.didResume
.또 하나의 키를 정의했다.6. DispatchQueue+Alamofire
DispatchQueue+Alamofire
에서는 확장DispatchQueue
을 통해 서로 다른 우선순위의 전역 대기열을 정의합니다.userInteractive
: 사용자와 상호작용하는 작업 대기열은 일반적으로 UI 새로 고침과 관련이 있습니다. 예를 들어 애니메이션 같은 것userInitiated
: 사용자가 시작하고 즉시 결과를 받아야 하는 작업 대기열utility
: 시간이 걸리는 작업 대기열background
: 백그라운드 작업 대기열, 사용자가 관심을 갖지 않아도 되고 보통 시간이 비교적 길다func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) {
asyncAfter(deadline: .now() + delay, execute: closure)
}
어떤 문제가 있으면 여러분의 메시지를 환영합니다!
제가 관리하는 Swift 개발군에 오신 것을 환영합니다.
536353151
, 이 그룹은 Swift 관련 내용만 논의합니다.오리지널 문장은 전재하여 출처를 밝혀 주십시오.감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.