Swift) NumberFomatter
NumberFormatter란?
애플 공식문서에서는 숫자 값과 해당 텍스트 표현 간에 변환하는 포맷터라고 소개하고 있습니다.
조금 더 살펴보는게 좋을 것 같네요.
OverView에서 이제 NumberFormatter
의 인스턴스는 NSNumber
객체를 포함하는 셀의 텍스트 표현을 포맷하고 숫자 값의 텍스트 표현을 NSNumber 객체로 변환합니다.
-> 여기서 NSNumber
란 기본 스칼라 숫자 값에 대한 객체 래퍼라고 되어 있는데 추후에 자세히 알아봐야 겠네요.
계속해서 NSNumber
는 표현에는 정수, 실수 및 복식이 포함되고, float 및 double은 지정된 소수점 위치로 형식화할 수 있습니다. NumberFormatter
객체는 셀이 허용할 수 있는 숫자 값에 범위를 부과할 수도 있습니다.
간단하게 말해서 "소수점에 대해서 표현범위를 지정이 가능하고, 정수에 대해서는 일정한 형식을 줄 수 있다" 는 것 같네요.
예제 코드
NumberFormatter
를 사용하기 위해선 Foundation
라이브러리를 선언 해줘야 합니다.NumberFormatter
는 NSObject와 연관되어 있기 떄문에 그런 것 같네요.
import Foundation
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let myNumber: Double = 100000
print(numberFormatter.string(for: myNumber))
// 출력 Optional("100,000") 기본적으로 옵셔널 값 이라서 바인딩 처리가 필요합니다.
NumberFormatter Style
numberStyle
에는 3가지 옵션이 있는데
decimal
percentage
currency
위의 코드로 style만 변경하자면 출력이
decimal
-> Optional("100,000")percentage
-> Optional("10,000,000%")currency
-> Optional("₩100,000")
위의 결과처럼 나옵니다.
상황에 따라서 style을 지정해주면 될 것 같습니다.
사용법
메소드를 통해서 사용해도 좋을 것 같고 extension
을 통해 활용할 수 있을 것 같습니다.
- 메소드.
func setNumberFormatter(myData: Double) -> String? { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .percent return numberFormatter.string(for: myNumber) }
extension
extension String { var insertComma: String { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal return numberFormatter.string(for: Double(self)) ?? self } }
'iOS > Swift' 카테고리의 다른 글
콜렉션 타입(Collection Types) - Array (0) | 2023.04.19 |
---|---|
Swift) 코드로 UITableView 구현하기 (0) | 2023.02.04 |
Swift) 옵저버 프로퍼티를 이용한 데이터 바인딩 (0) | 2022.10.18 |
Swift) Delegate, Notification 둘 중 어느 것을 사용해야 할까 (0) | 2022.10.12 |
Swift) Realm 연동하기 (0) | 2022.10.12 |