-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathNSDictionaryAdditions.m
More file actions
executable file
·154 lines (129 loc) · 4.58 KB
/
Copy pathNSDictionaryAdditions.m
File metadata and controls
executable file
·154 lines (129 loc) · 4.58 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
//
// NSDictionaryAdditions.m
// WeiboPad
//
// Created by junmin liu on 10-10-6.
// Copyright 2010 Openlab. All rights reserved.
//
#import "NSDictionaryAdditions.h"
@implementation NSDictionary (Additions)
- (BOOL)boolValueForKey:(NSString *)key {
return [self boolValueForKey:key defaultValue:NO];
}
- (BOOL)boolValueForKey:(NSString *)key defaultValue:(BOOL)defaultValue {
return [self objectForKey:key] == [NSNull null] ? defaultValue
: [[self objectForKey:key] boolValue];
}
- (int)intValueForKey:(NSString *)key {
return [self intValueForKey:key defaultValue:0];
}
- (int)intValueForKey:(NSString *)key defaultValue:(int)defaultValue {
return [self objectForKey:key] == [NSNull null]
? defaultValue : [[self objectForKey:key] intValue];
}
- (NSDictionary *)dictionaryValueForKey:(NSString *)key {
NSObject *obj = [self objectForKey:key];
if (obj && [obj isKindOfClass:[NSDictionary class]]) {
return (NSDictionary *)obj;
}
return nil;
}
- (NSArray *)arrayValueForKey:(NSString *)key {
NSObject *obj = [self objectForKey:key];
if (obj && [obj isKindOfClass:[NSArray class]]) {
return (NSArray *)obj;
}
return nil;
}
- (time_t)timeValueForKey:(NSString *)key {
return [self timeValueForKey:key defaultValue:0];
}
- (time_t)timeValueForKey:(NSString *)key defaultValue:(time_t)defaultValue {
id timeObject = [self objectForKey:key];
if ([timeObject isKindOfClass:[NSNumber class]]) {
NSNumber *n = (NSNumber *)timeObject;
CFNumberType numberType = CFNumberGetType((CFNumberRef)n);
NSTimeInterval t;
if (numberType == kCFNumberLongLongType) {
t = [n longLongValue] / 1000;
}
else {
t = [n longValue];
}
return t;
}
else if ([timeObject isKindOfClass:[NSString class]]) {
NSString *stringTime = timeObject;
if (stringTime.length == 13) {
long long llt = [stringTime longLongValue];
NSTimeInterval t = llt / 1000;
return t;
}
else if (stringTime.length == 10) {
long long lt = [stringTime longLongValue];
NSTimeInterval t = lt;
return t;
}
else {
if (!stringTime || (id)stringTime == [NSNull null]) {
stringTime = @"";
}
struct tm created;
time_t now;
time(&now);
if (stringTime) {
if (strptime([stringTime UTF8String], "%a %b %d %H:%M:%S %z %Y", &created) == NULL) {
strptime([stringTime UTF8String], "%a, %d %b %Y %H:%M:%S %z", &created);
}
return mktime(&created);
}
}
}
return defaultValue;
}
- (long long)longLongValueForKey:(NSString *)key {
return [self longLongValueForKey:key defaultValue:0];
}
- (long long)longLongValueForKey:(NSString *)key defaultValue:(long long)defaultValue {
return [self objectForKey:key] == [NSNull null]
? defaultValue : [[self objectForKey:key] longLongValue];
}
- (double)doubleValueForKey:(NSString *)key {
return [self doubleValueForKey:key defaultValue:0];
}
- (double)doubleValueForKey:(NSString *)key defaultValue:(double)defaultValue {
return [self objectForKey:key] == [NSNull null]
? defaultValue : [[self objectForKey:key] doubleValue];
}
- (NSString *)stringValueForKey:(NSString *)key {
return [self stringValueForKey:key defaultValue:nil];
}
- (NSString *)stringValueForKey:(NSString *)key defaultValue:(NSString *)defaultValue {
if ([self objectForKey:key] == nil || [self objectForKey:key] == [NSNull null]) {
return defaultValue;
}
id result = [self objectForKey:key];
if ([result isKindOfClass:[NSNumber class]]) {
return [result stringValue];
}
return result;
}
- (NSArray *)arrayObjectForKey:(NSString *)key
defaultValue:(NSArray *)defaultValue {
id obj = [self objectForKey:key];
return obj == nil || obj == [NSNull null] || ![obj isKindOfClass:[NSArray class]]
? defaultValue : obj;
}
- (NSArray *)arrayObjectForKey:(NSString *)key {
return [self arrayObjectForKey:key defaultValue:nil];
}
- (NSDictionary *)dictionaryObjectForKey:(NSString *)key
defaultValue:(NSDictionary *)defaultValue {
id obj = [self objectForKey:key];
return obj == nil || obj == [NSNull null] || ![obj isKindOfClass:[NSDictionary class]]
? defaultValue : obj;
}
- (NSDictionary *)dictionaryObjectForKey:(NSString *)key {
return [self dictionaryObjectForKey:key defaultValue:nil];
}
@end