Reputation: 125
In Obj-C
I have the following snippet in a setter called setTime:(NSDate *)time
static NSDateFormatter *dateFormatter;
if (!dateFormatter) {
dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"h a";
}
self.title.text = [dateFormatter stringFromDate:time];
This prevents the dateFormatter
to be created every time the setter is called.
In Swift my setter currently looks like this:
var time:NSDate {
didSet {
let dateFormatter:NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h a"
self.title.text = dateFormatter.stringFromDate(time)
}
}
Is there an equivalent of how to create the static variable in the setter in Swift?
Upvotes: 0
Views: 187
Reputation: 114875
You can add a static type property to your class. This will create the NSDateFormatter:
private static let dateFormatter: NSDateFormatter = {
let df = NSDateFormatter()
df.dateFormat="h a"
return df
}()
and then refer to this in your setter:
var time:NSDate {
didSet {
self.text = self.dynamicType.dateFormatter.stringFromDate(time)
}
}
Upvotes: 3