I'm trying to create two NSNumberFormater objects -- one with maximumFractionDigits of 0 and one with maximumFractiongDigits of 6. I would like to do this during initialization so I could use these objects repeatedly. What I have right now is:
private let formatter = NSNumberFormatter()
private var niceAccumulator : String {
if accumulator % 1 == 0 {
formatter.maximumFractionDigits = 0
return String(formatter.stringFromNumber(accumulator)!)
}
else {
formatter.maximumFractionDigits = 6
return String(formatter.stringFromNumber(accumulator)!)
}
}
What I would like to do is something along the lines of:
private let intFormatter = NSNumberFormatter(maximumFractionDigits: 0)
private let doubleFormatter = NSNumberFormatter(maximumFractionDigits: 6)
private var niceAccumulator : String {
if accumulator % 1 == 0 {
return String(intFormatter.stringFromNumber(accumulator)!)
}
else {
return String(doubleFormatter.stringFromNumber(accumulator)!)
}
}
I'm just learning to code again so I really appreciate the help. Thanks everyone!
You have two options. As @TofuBeer indicated in his answer, you can use an initializer:
private let intFormatter: NSNumberFormatter
private let doubleFormatter: NSNumberFormatter
init() {
intFormatter = NSNumberFormatter()
intFormatter.maximumFractionDigits = 0
doubleFormatter = NSNumberFormatter()
doubleFormatter.maximumFractionDigits = 6
// Call to an appropriate super.init, assuming you are subclassing something
}
You can also initialize your property with a closure, if you prefer not to use an initializer:
private let intFormatter: NSNumberFormatter = {
let formatter = NSNumberFormatter()
formatter.maximumFractionDigits = 0
return formatter
}()
private let doubleFormatter: NSNumberFormatter = {
let formatter = NSNumberFormatter()
formatter.maximumFractionDigits = 6
return formatter
}()
If you find you need to use this construct a lot in your project, it is worth pointing out that you can define your own convenience initializer:
extension NSNumberFormatter {
convenience init(maximumFractionDigits: Int) {
self.init()
self.maximumFractionDigits = maximumFractionDigits
}
}
Then you can do:
private let intFormatter = NSNumberFormatter(maximumFractionDigits: 0)
private let doubleFormatter = NSNumberFormatter(maximumFractionDigits: 6)
Use an initializer
private let intFormatter = NSNumberFormatter()
private let doubleFormatter = NSNumberFormatter()
init()
{
intFormatter.maximumFractionDigits = 0
doubleFormatter.maximumFractionDigits = 6
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.