-
Notifications
You must be signed in to change notification settings - Fork 0
/
DCTemperature.m
45 lines (37 loc) · 1.1 KB
/
DCTemperature.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// DCTemperature.m
#import "DCTemperature.h"
#import <objc/runtime.h>
#import <Weather/WeatherPreferences.h>
@implementation DCTemperature
- (instancetype)init:(CGFloat)temperature {
self = [super init];
if (self) {
self.temperature = temperature;
}
return self;
}
- (double)temperatureInUserUnit {
return [[objc_getClass("WeatherPreferences") sharedPreferences] isCelsius] ? [self temperatureInCelsius] : [self temperatureInFahrenheit];
}
- (double)temperatureInUnit:(enum TemperatureUnit)unit {
switch (unit) {
case SystemTemperatureUnit:
return [self temperatureInUserUnit];
case Celsius:
return [self temperatureInCelsius];
case Fahrenheit:
return [self temperatureInFahrenheit];
case Kelvin:
return [self temperatureInKelvin];
}
}
- (double)temperatureInCelsius {
return round((self.temperature - 32) * 5.0 / 9.0);
}
- (double)temperatureInFahrenheit {
return round(self.temperature);
}
- (double)temperatureInKelvin {
return round((self.temperature - 32) * 5.0 / 9.0 + 273.15);
}
@end