Skip to content

Instantly share code, notes, and snippets.

@lamprosg
Last active April 27, 2022 17:25
Show Gist options
  • Select an option

  • Save lamprosg/5244817 to your computer and use it in GitHub Desktop.

Select an option

Save lamprosg/5244817 to your computer and use it in GitHub Desktop.
(iOS) NSUserDefaults
//Set the (bool) flag
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"logged_in"];
[[NSUserDefaults standardUserDefaults]synchronize];
//Read it
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"logged_in"])
{
[self displayLogin];
} else {
[self displayMainScreen];
}
-(void)saveToUserDefaults:(NSString*)myString
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:myString forKey:@"Prefs"];
[standardUserDefaults synchronize];
}
}
-(NSString*)retrieveFromUserDefaults
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *val = nil;
if (standardUserDefaults)
val = [standardUserDefaults objectForKey:@"Prefs"];
return val;
}
+(void) addToFavorites: (Record *)record {
if (!Eng.user.loggedIn) return;
NSString *key = [[NSString alloc] initWithFormat:@"%@%i", STORE_DATA_FAVORITES_KEY, Eng.user.userId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favorites = [[(NSMutableArray *)[defaults objectForKey:key] mutableCopy] autorelease];
if (favorites == nil) {
favorites = [NSMutableArray array];
}
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:record];
if (![favorites containsObject:encodedObject])
[favorites addObject:encodedObject];
[defaults setObject:favorites forKey:key];
[defaults synchronize];
NSLog(@"Favorites: %i", favorites.count);
[key release];
}
+(void) removeFromFavorites: (Record *)record {
if (!Eng.user.loggedIn) return;
NSString *key = [[NSString alloc] initWithFormat:@"%@%i", STORE_DATA_FAVORITES_KEY, Eng.user.userId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favorites = [[(NSMutableArray *)[defaults objectForKey:key] mutableCopy] autorelease];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:record];
[favorites removeObject:encodedObject];
[defaults setObject:favorites forKey:key];
[defaults synchronize];
NSLog(@"Favorites: %i", favorites.count);
[key release];
}
+(NSInteger) countFavorites {
if (!Eng.user.loggedIn) return 0;
NSString *key = [[NSString alloc] initWithFormat:@"%@%i", STORE_DATA_FAVORITES_KEY, Eng.user.userId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favorites = [defaults objectForKey:key];
[key release];
return favorites.count;
}
+(NSArray *) getFavoritesAsRecords {
if (!Eng.user.loggedIn) return nil;
NSString *key = [[NSString alloc] initWithFormat:@"%@%i", STORE_DATA_FAVORITES_KEY, Eng.user.userId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favorites = [defaults objectForKey:key];
//Used to reset favorites
// [defaults setObject:[NSMutableArray array] forKey:key];
// [defaults synchronize];
NSMutableArray *favs = [[NSMutableArray alloc] init];
NSEnumerator *e = [favorites objectEnumerator];
NSData *object;
Record *record;
while (object = [e nextObject]) {
record = (Record *)[NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)object];
[favs addObject:record];
}
MyLog(@"Will show %i records", favs.count);
[key release];
return [favs autorelease];
}
+(BOOL) isInFavorites: (Record *)record {
if (!Eng.user.loggedIn) return NO;
NSString *key = [[NSString alloc] initWithFormat:@"%@%i", STORE_DATA_FAVORITES_KEY, Eng.user.userId];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favorites = [defaults objectForKey:key];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:record];
[key release];
return [favorites containsObject:encodedObject];
}
//Usage
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//Setting values
– setBool:forKey:
– setFloat:forKey:
– setInteger:forKey:
– setObject:forKey:
– setDouble:forKey:
– setURL:forKey:
//Getting values
– boolForKey:
– floatForKey:
– integerForKey:
– objectForKey:
– doubleForKey:
– URLForKey:
//Remove an object
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment