mirror of
https://github.com/zhigang1992/GVUserDefaults.git
synced 2026-01-12 09:04:17 +08:00
0.3.0: changed the prefix method into a transformKey: method call [backwards incompatible]
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
0.3.0 - December 19, 2012
|
||||
- Changed the prefix method into a transformKey: method call [backwards incompatible]
|
||||
|
||||
0.2.0 - December 19, 2012
|
||||
- Don't automatically synchronize in the setter
|
||||
- Performance logging in the example app
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
NSDictionary *defaults = @{
|
||||
@"NSUSerDefault:userName": @"default",
|
||||
@"NSUSerDefault:userId": @1
|
||||
@"NSUserDefaultUserName": @"default",
|
||||
@"NSUserDefaultUserId": @1
|
||||
};
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userId"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserId"];
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
|
||||
|
||||
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||
|
||||
@@ -15,18 +15,18 @@
|
||||
[super setUp];
|
||||
|
||||
NSDictionary *defaults = @{
|
||||
@"NSUSerDefault:userName": @"default",
|
||||
@"NSUSerDefault:userId": @1
|
||||
@"NSUserDefaultUserName": @"default",
|
||||
@"NSUserDefaultUserId": @1
|
||||
};
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userId"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserId"];
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUSerDefault:userId"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserName"];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSUserDefaultUserId"];
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
}
|
||||
|
||||
- (void)testGetters {
|
||||
STAssertEqualObjects([GVUserDefaults standardUserDefaults].userName, [[NSUserDefaults standardUserDefaults] objectForKey:@"NSUSerDefault:userName"], nil);
|
||||
STAssertEqualObjects([GVUserDefaults standardUserDefaults].userId, [[NSUserDefaults standardUserDefaults] objectForKey:@"NSUSerDefault:userId"], nil);
|
||||
STAssertEqualObjects([GVUserDefaults standardUserDefaults].userName, [[NSUserDefaults standardUserDefaults] objectForKey:@"NSUserDefaultUserName"], nil);
|
||||
STAssertEqualObjects([GVUserDefaults standardUserDefaults].userId, [[NSUserDefaults standardUserDefaults] objectForKey:@"NSUserDefaultUserId"], nil);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
|
||||
@implementation GVUserDefaults (Properties)
|
||||
|
||||
- (NSString *)prefix {
|
||||
return @"NSUSerDefault:";
|
||||
- (NSString *)transformKey:(NSString *)key {
|
||||
key = [key stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[key substringToIndex:1] uppercaseString]];
|
||||
return [NSString stringWithFormat:@"NSUserDefault%@", key];
|
||||
}
|
||||
|
||||
@dynamic userName;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "GVUserDefaults"
|
||||
s.version = "0.2.0"
|
||||
s.version = "0.3.0"
|
||||
s.summary = "NSUserDefaults access via properties."
|
||||
s.homepage = "https://github.com/gangverk/GVUserDefaults"
|
||||
s.license = 'MIT'
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
+ (BOOL)resolveInstanceMethod:(SEL)aSEL {
|
||||
NSString *method = NSStringFromSelector(aSEL);
|
||||
|
||||
if ([method isEqualToString:@"prefix"]) {
|
||||
if ([method isEqualToString:@"transformKey"]) {
|
||||
// Prevent endless loop for possibly non-existing prefix method
|
||||
return [super resolveInstanceMethod:aSEL];
|
||||
}
|
||||
@@ -35,16 +35,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)getPrefix {
|
||||
if ([self respondsToSelector:@selector(prefix)]) {
|
||||
return [self performSelector:@selector(prefix)];
|
||||
- (NSString *)_transformKey:(NSString *)key {
|
||||
if ([self respondsToSelector:@selector(transformKey:)]) {
|
||||
return [self performSelector:@selector(transformKey:) withObject:key];
|
||||
}
|
||||
|
||||
return @"";
|
||||
return key;
|
||||
}
|
||||
|
||||
id accessorGetter(id self, SEL _cmd) {
|
||||
NSString *key = [NSString stringWithFormat:@"%@%@", [self getPrefix], NSStringFromSelector(_cmd)];
|
||||
NSString *key = NSStringFromSelector(_cmd);
|
||||
key = [self _transformKey:key];
|
||||
return [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
||||
}
|
||||
|
||||
@@ -52,7 +53,7 @@ void accessorSetter(id self, SEL _cmd, id newValue) {
|
||||
NSString *method = NSStringFromSelector(_cmd);
|
||||
NSString *key = [[method stringByReplacingCharactersInRange:NSMakeRange(0, 3) withString:@""] stringByReplacingOccurrencesOfString:@":" withString:@""];
|
||||
key = [key stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[key substringToIndex:1] lowercaseString]];
|
||||
key = [NSString stringWithFormat:@"%@%@", [self getPrefix], key];
|
||||
key = [self _transformKey:key];
|
||||
|
||||
// Set value of the key anID to newValue
|
||||
[[NSUserDefaults standardUserDefaults] setObject:newValue forKey:key];
|
||||
|
||||
11
README.md
11
README.md
@@ -27,18 +27,19 @@ You can even save defaults by setting the property:
|
||||
At this moment only objects can be stored, so no integers or booleans. Just wrap them in an NSNumber.
|
||||
|
||||
### Key prefix
|
||||
The keys in NSUserDefaults are the same name as your properties. If you'd like to prefix them, add a `prefix` method to your category:
|
||||
The keys in NSUserDefaults are the same name as your properties. If you'd like to prefix or alter them, add a `transformKey:` method to your category. For example, to turn "userName" into "NSUserDefaultUserName":
|
||||
|
||||
- (NSString *)prefix {
|
||||
return @"NSUSerDefault:";
|
||||
- (NSString *)transformKey:(NSString *)key {
|
||||
key = [key stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[key substringToIndex:1] uppercaseString]];
|
||||
return [NSString stringWithFormat:@"NSUserDefault%@", key];
|
||||
}
|
||||
|
||||
### Registering defaults
|
||||
Registering defaults is done as usual, on NSUserDefaults directly (use the same prefix, if any!).
|
||||
|
||||
NSDictionary *defaults = @{
|
||||
@"NSUSerDefault:userName": @"default",
|
||||
@"NSUSerDefault:userId": @1
|
||||
@"NSUSerDefaultUserName": @"default",
|
||||
@"NSUSerDefaultUserId": @1
|
||||
};
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
|
||||
|
||||
Reference in New Issue
Block a user