-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUserDefaultsLogger.m
121 lines (107 loc) · 3.95 KB
/
UserDefaultsLogger.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
//
// UserDefaultsLogger.m
// Rebtel2
//
// Created by Claes Lilliesköld on 10/6/12.
// Copyright (c) 2012 Rebtel Services S.à.r.l. All rights reserved.
//
#import "UserDefaultsLogger.h"
enum kUserDefaultsType
{
kUserDefaultsTypeData = 0,
kUserDefaultsTypeString = 1,
kUserDefaultsTypeNumber = 2,
kUserDefaultsTypeDate = 3,
kUserDefaultsTypeArray = 4,
kUserDefaultsTypeDictionary = 5,
kUserDefaultsTypeUnknown = -1,
};
@implementation UserDefaultsLogger
- (enum kUserDefaultsType)defaultsTypeForObject:(id)object
{
enum kUserDefaultsType defaultsType;
if ([object isKindOfClass:[NSData class]]) {
defaultsType = kUserDefaultsTypeData;
} else if ([object isKindOfClass:[NSString class]]) {
defaultsType = kUserDefaultsTypeString;
} else if ([object isKindOfClass:[NSNumber class]]) {
defaultsType = kUserDefaultsTypeNumber;
} else if ([object isKindOfClass:[NSDate class]]) {
defaultsType = kUserDefaultsTypeDate;
} else if ([object isKindOfClass:[NSArray class]]) {
defaultsType = kUserDefaultsTypeArray;
} else if ([object isKindOfClass:[NSDictionary class]]) {
defaultsType = kUserDefaultsTypeDictionary;
} else {
defaultsType = kUserDefaultsTypeUnknown;
}
return defaultsType;
}
- (BOOL)isPropertyList:(id)object
{
return ([object isKindOfClass:[NSArray class]] || [object isKindOfClass:[NSDictionary class]]);
}
- (void)logValueOfProperty:(id)property
{
}
- (void)logValueOfPropertyKey:(NSString *)key withObject:(id)object andType:(enum kUserDefaultsType)type
{
switch (type) {
case kUserDefaultsTypeData:
NSLog(@"property:\"%@\" type:NSData", key);
break;
case kUserDefaultsTypeString:
NSLog(@"property:\"%@\" type:NSString value:\"%@\"", key, object);
break;
case kUserDefaultsTypeNumber:
NSLog(@"property:\"%@\" type:NSNumber value:\"%@\"", key, object);
break;
case kUserDefaultsTypeDate:
NSLog(@"property:\"%@\" type:NSDate value:\"%@\"", key, object);
break;
case kUserDefaultsTypeUnknown:
default:
NSLog(@"property:\"%@\" type:Unknown value:\"%@\"", key, object);
break;
}
}
- (void)logValuesOfDictionary:(id)dictionary withName:(NSString *)name
{
if ([self isPropertyList:dictionary]) {
id <NSFastEnumeration>list = dictionary;
for (NSString *key in list) {
id object = [dictionary objectForKey:key];
enum kUserDefaultsType defaultsType = [self defaultsTypeForObject:object];
switch (defaultsType) {
case kUserDefaultsTypeData:
case kUserDefaultsTypeString:
case kUserDefaultsTypeNumber:
case kUserDefaultsTypeDate:
case kUserDefaultsTypeArray:
[self logValueOfPropertyKey:key withObject:object andType:defaultsType];
break;
case kUserDefaultsTypeDictionary:
[self logValuesOfDictionary:object withName:key];
break;
case kUserDefaultsTypeUnknown:
default:
NSLog(@"Strange");
;
}
}
} else {
[self logValueOfProperty:dictionary];
}
}
- (void)logUserDefaults
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *allPersistentDomainNames = [userDefaults persistentDomainNames];
for (NSString *currentPersistenceDomain in allPersistentDomainNames) {
NSLog(@"Persistent Domain %@", currentPersistenceDomain);
NSLog(@"====================================");
NSDictionary *userDefaultsDictionary = [userDefaults persistentDomainForName:currentPersistenceDomain];
[self logValuesOfDictionary:userDefaultsDictionary withName:currentPersistenceDomain];
}
}
@end