문자열인데 숫자로 바꾸고 싶은 경우 사용하는 코드를 정리해봤다.
첫번째 방법은 제일 간단한 int와 double의 생성자를 사용하는 방법이다.
let sint: String = "10"
let sdouble: String = "10.0"
let inum = Int(sint) ?? 0
let dnum = Double(sdouble) ?? 0
print(inum)
print(dnum)
문자열을 Int 혹은 Double타입의 생성자를 사용하면 옵셔널타입의 정수 혹은 실수로 반환해준다. 옵셔널이기에 당연히 옵셔널 바인딩이 필요하다 (??의 사용법이 생소하다면 여기로)
let formatter = NumberFormatter()
formatter.numberStyle = .decimal //10진수
let numberString = "1,234.56"
let num = formatter.number(from: numberString) ?? 0
print(num)
NumberFormatter 클래스를 사용하는 방법이다 클래스의 인스턴스를 생성하고 이것저것 해줘야 하긴 하지만 정수/실수를 가리지 않고 문자열에 ,같은 문자가 있어도 알아서 처리해준다.
얘도 마찬가지로 옵셔널타입의 데이터를 반환하기에 옵셔널 바인딩이 필요하다.
Objective-C를 이용하는 방법이다.
let stringNumber = "123.45"
let doubleValue = (stringNumber as NSString).doubleValue
print(doubleValue)
let stringNumber2 = "12345"
let intValue = (stringNumber2 as NSString).intValue
print(intValue)
String을 NSString타입으로 업캐스팅해서 변환하는 방법이다
Swift로 개발이 주로 이루어 진다면 사용하기 좀 번거로운 방법이지만 Obj-C로 만들어진 앱을 유지보수 하는 등의 상황을 마주 할 수 있으므로 어떤의미인지 형태정도만 외워두자.