포스트

178. 문자열을 정수로 바꾸기

나의 코드

1
2
3
4
5
6
7
8
9
10
import Foundation

func solution(_ n_str:String) -> Int {
    
    var answer : Int = 0
    
    answer = Int(n_str)!
    
    return answer
}

이렇게 생각한 이유. 일단 일차원적으로 생각을 했다. 단순히 문자열에 인트를 감싼 일차적인 변환.

아니나 다를까 역시 데이터형이 맞지않다는 에러가 발생하였다.

그러다 문득 자바에서 쓰던 parseInt와 비슷한게 있나 싶어 구글링을 하게 되었다.

알고보니 처음에 생각한 방법이 맞았으나, swift에서는 옵셔널 타입이 존재함으로 그걸로 인해서 에러가 났다는것을 알았다.

Optional Int -> 문자열에 다른 숫자이외 다른 문자가 포함이되어 변환을 할 수 없는 경우. nil이 리턴이 되는 경우.

ex)

1
2
var string : String = "1234a"
// 이런경우 옵셔널 인트 타입이 된다.

에러는 아래와 같다.

간단하게 에러의 의미를 보자면

  1. 옵셔널 타입의 인트?는 반드시 인트의 밸류 값에서 언래핑 되어야 한다.

  2. (참고) 옵션 값에 ‘nil’가 포함된 경우 기본값을 제공하기 위해 ‘?’를 사용하여 합친다.

  3. (참고) 옵션 값에 ‘nil’가 포함된 경우 실행을 중단하려면 ‘!’을 사용하여 강제로 랩을 해제합니다.

그래서 옵셔널을 강제로 해제하는 !를 사용하여 문제를 풀었다.

물론 예외조건일때는 어떻게 처리하라 라는 문제가 더 있었다면 또 코드를 추가해서 했을것같다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.