[ios_Swift] Result

이시영·2023년 9월 21일

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)")
}

이를 통해 함수가 성공 또는 실패를 명시적으로 전달하고, 에러 처리를 더 쉽게 관리할 수 있습니다.

0개의 댓글