티스토리 뷰
Result타입은 스위프트 5.0에서 발표한 내용입니다.
특히 비동기 API에서의 결과 처리에 대한 복잡함을 간단하고 명확하게 만들어주고
쉽게 에러를 핸들링할 수 있도록 해줘요.
Result는 enum으로 선언되어 있으며,
success와 failure로 두개의 케이스가 존재합니다.
(벌써 명확함이 느껴지기 시작)
Result타입은 성공인지 실패인지 나타내는 값입니다.
첫 번째 줄 우측을 보시면 where으로 조건이 선언되어 있습니다.
Failure은 스위프트의 Error타입을 준수해야 합니다.
아래는 URLSession에 사용된 예시입니다.
네트워킹을 통해 데이터를 받거나 에러를 받을 수 있습니다.
let task = URLSession.shared.dataTask(with: url) {
data, response, error in
if let error = error {
// Handle error
...
} else if let data = data {
// Handle successful response data
...
}
}
옵셔널 data와 error를 언래핑하고 클로저에 전달합니다.
예를 들어 에러가 발생했을 때는 (nil, error)
에러가 발생하지 않을 때는 (data, nil) 이렇게 전달합니다.
또 네트워크 호출을 할 때마다 각 값을 언래핑해줘야 합니다.
Result를 사용하면 문제를 해결할 수 있습니다.
Result <Data, Error>를 사용해줍니다.
이전엔 nil을 보내던 방식이면 Result를 통해 nil대신 무엇이 잘못된 지 말해줄 수 있습니다.
let task = URLSession.shared.dataTask(with: url) { result in
switch result {
case .success(let data):
// Handle successful response data
...
case .failure(let error):
// Handle error
...
}
}
또한 switch구문을 함께 사용해 더욱 직관적으로 성공인지 실패인지 확인 가능합니다.
https://www.hackingwithswift.com/articles/161/how-to-use-result-in-swift
'Tech > Swift' 카테고리의 다른 글
스위프트 클래스 (0) | 2020.05.30 |
---|---|
스위프트 인터뷰 (0) | 2020.05.30 |
스위프트 lazy 프로퍼티 (0) | 2020.03.31 |
스위프트 typealias에 대해서 (0) | 2020.03.31 |
Swift 5.2 Key Path Exressions as Functions (0) | 2020.03.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ARC
- 딥러닝
- SWIFT
- wwdc
- ios
- 스위프트UI
- Deep learning
- 알고리즘
- 애니메이션
- 머신러닝
- 책 후기
- 책 추천
- 책
- ReactiveX
- Animation
- 독서
- Xcode
- swift5
- iOS SwiftUI
- Algorithm
- objective-c
- stanford SwiftUI
- swiftUI
- 문자열
- rxswift
- leetcode
- 스위프트
- objc
- string
- RX
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함