Swift에서 Result는 주로 에러 처리를 위해 사용되는 제네릭 열거형(Enumeration)입니다. Result를 사용하면 함수나 메서드에서 성공 또는 실패를 반환할 때 명시적으로 처리할 수 있습니다.
Result 열거형은 주로 두 가지 경우를 다룰 때 사용됩니다.
1) 성공 (Success): 함수 또는 메서드가 원하는 작업을 성공적으로 완료한 경우에 해당합니다. 이 경우 Result에는 연관 값으로 성공한 값을 포함합니다.
2) 실패 (Failure): 함수 또는 메서드가 작업을 실패한 경우에 해당합니다. 이 경우 Result에는 연관 값으로 에러 또는 실패 원인을 포함합니다.
예를 들어, 파일을 읽는 함수를 생각해보겠습니다.
func readFile(atPath path: String) -> Result<String, Error> {
// 파일을 읽어오는 작업 수행
if let fileContents = try? String(contentsOfFile: path) {
return .success(fileContents) // 성공 시 결과에 파일 내용을 포함
} else {
let error = NSError(domain: "FileReadErrorDomain", code: 0, userInfo: nil)
return .failure(error) // 실패 시 에러를 결과에 포함
}
}
이 함수는 성공한 경우 Result.success로 성공 결과를 반환하고, 실패한 경우 Result.failure로 실패 원인을 반환합니다. 호출자는 switch 문이나 다른 방법을 사용하여 결과를 처리할 수 있습니다.
let filePath = "example.txt"
switch readFile(atPath: filePath) {
case .success(let fileContents):
print("파일 내용: \(fileContents)")
case .failure(let error):
print("파일 읽기 실패: \(error)")
}
이를 통해 함수가 성공 또는 실패를 명시적으로 전달하고, 에러 처리를 더 쉽게 관리할 수 있습니다.