forked from jerrykrinock/ClassesObjC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSSDocInPrefs.m
135 lines (108 loc) · 3.78 KB
/
SSDocInPrefs.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
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
#import "SSDocInPrefs.h"
#import "SSUtils.h"
// globals
@implementation SSDocInPrefs
SSAOm(NSString*,aggregateKey,setAggregateKey)
SSAOm(NSString*,documentKey,setDocumentKey)
SSAOm(NSDictionary*,defaultDefaults,setDefaultDefaults)
- (id)initWithAggregateKey:(NSString*)aggregateKey
documentKey:(NSString*)documentKey
defaultDefaults:(NSDictionary*)defaultDefaults {
if ((self = [super init]))
{
[self setAggregateKey:aggregateKey] ;
[self setDocumentKey:documentKey] ;
[self setDefaultDefaults:defaultDefaults] ;
}
return self ;
}
+ (id)SSBuiltInDocumentWithAggregateKey:(NSString*)aggregateKey
documentKey:(NSString*)documentKey
defaultDefaults:(NSDictionary*)defaultDefaults {
SSDocInPrefs *x = [[SSDocInPrefs alloc]
initWithAggregateKey:aggregateKey
documentKey:documentKey
defaultDefaults:defaultDefaults] ;
return [x autorelease];
}
- (void)dealloc
{
[self setAggregateKey:nil] ;
[self setDocumentKey:nil] ;
[self setDefaultDefaults:nil] ;
[super dealloc] ;
}
- (void)setObject:(id)object forKey:(NSString*)attributeKey
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults] ;
NSString* aggregateKey = [self aggregateKey] ;
NSString* documentKey = [self documentKey] ;
NSMutableDictionary* documentDics = [[userDefaults objectForKey:aggregateKey] mutableCopy] ;
if (!documentDics)
documentDics = [[NSMutableDictionary alloc] init] ;
NSMutableDictionary* documentDic = [[documentDics objectForKey:documentKey] mutableCopy] ;
if (!documentDic)
documentDic = [[NSMutableDictionary alloc] init] ;
[documentDic setObject:object forKey:attributeKey] ;
[documentDics setObject:documentDic forKey:documentKey] ;
[documentDic release] ;
[userDefaults setObject:documentDics forKey:aggregateKey] ;
[documentDics release] ;
[userDefaults synchronize] ;
}
- (id)objectForKey:(NSString*)attributeKey
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults] ;
id object = [[[userDefaults objectForKey:[self aggregateKey]] objectForKey:[self documentKey]] objectForKey:attributeKey] ;
if (!object)
object = [[self defaultDefaults] objectForKey:attributeKey] ;
return object ;
}
- (void)setBool:(BOOL)yn forKey:(NSString*)attributeKey
{
[self setObject:[NSNumber numberWithBool:yn] forKey:attributeKey] ;
}
- (BOOL)boolForKey:(NSString*)attributeKey
{
BOOL output = ([[self objectForKey:attributeKey] boolValue] != 0) ;
return output;
}
- (void)setInteger:(int)n forKey:(NSString*)attributeKey
{
[self setObject:[NSNumber numberWithInt:n] forKey:attributeKey] ;
}
- (int)integerForKey:(NSString*)attributeKey
{
return ([[self objectForKey:attributeKey] intValue]) ;
}
- (void)removeObjectForKey:(NSString*)attributeKey
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults] ;
NSString* aggregateKey = [self aggregateKey] ;
NSString* documentKey = [self documentKey] ;
NSMutableDictionary* documentDics = [[userDefaults objectForKey:aggregateKey] mutableCopy] ;
if (documentDics)
{
NSMutableDictionary* documentDic = [[documentDics objectForKey:documentKey] mutableCopy] ;
if (documentDic)
{
[documentDic removeObjectForKey:attributeKey] ;
[documentDics setObject:documentDic forKey:documentKey] ;
[userDefaults setObject:documentDics forKey:aggregateKey] ;
[documentDic release] ;
[documentDics release] ;
[userDefaults synchronize] ;
}
}
}
- (void)removeAllAttributes
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults] ;
NSString* aggregateKey = [self aggregateKey] ;
NSString* documentKey = [self documentKey] ;
NSMutableDictionary* documentDics = [[userDefaults objectForKey:aggregateKey] mutableCopy] ;
[documentDics removeObjectForKey:documentKey] ;
[userDefaults setObject:documentDics forKey:aggregateKey] ;
[userDefaults synchronize] ;
}
@end