Swift :: 문자열로부터 Int/Double 타입 값 얻기

문자열의 숫자를 값으로 변환하기

Int 타입의 경우에는 String.toInt() 메소드가 있어서 Int? 타입의 값을 얻을 수 있다. 당연히 toDouble() 메소드가 있을 줄 알았는데, swiftstub.com에서는 이런 멤버가 없다는 에러가 나왔다.

 Swift 2.0 부터는 문자열의 toInt()가 제거되고, Int, Double의 생성자에 문자열을 넣어 옵셔널 타입을 얻을 수 있게 되었다.

 

let str = "123456"
let strInt = Int(str) // Optional(123456)
let strDouble = Double(str) // Optional(123456)

하지만 아래의 방법 역시 여전히 유효하긴하다.

  1. NSString의 -doubleValue를 이용한다. (2.0에서 제거됨)
  2. NSNumberFormatter를 이용한다.

 

let str = "123.456"
let dValue = NSNumberFormatter().numberFromString(str)?.doubleValue
// Optional(123456.0)

와 같이 처리하는 것이다. 스탠포드 Swift 강의에서는 아마 1.2 기준이라 그런지 이 방법을 사용하더라.