55 votes

Enregistrement de UIColor dans et chargement depuis NSUserDefaults

Quel est le moyen le plus simple d'économiser UIColor en NSUserDefaults et de le récupérer ensuite?

134voto

Wevah Points 17636

Une façon de le faire pourrait être de l'archiver (comme avec NSColor, bien que je ne l'aie pas testé):

 NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"];
 

Et pour le récupérer:

 NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
 

7voto

Unreality Points 1486

J'ai la réponse par moi-même

sauver

 const CGFloat  *components = CGColorGetComponents(pColor.CGColor);
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setFloat:components[0]  forKey:@"cr"];
[prefs setFloat:components[1]  forKey:@"cg"];
[prefs setFloat:components[2]  forKey:@"cb"];
[prefs setFloat:components[3]  forKey:@"ca"];
 

Charge

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
UIColor* tColor = [UIColor colorWithRed:[prefs floatForKey:@"cr"] green:[prefs floatForKey:@"cg"] blue:[prefs floatForKey:@"cb"] alpha:[prefs floatForKey:@"ca"]];
 

5voto

lifjoy Points 717

Merci pour la catégorie UIColor d' Erica . Je n'aimais pas vraiment économiser 4 flottants dans les préférences, je voulais juste une entrée unique.

Ainsi, en utilisant la catégorie UIColor d'Erica, j'ai pu convertir la couleur RVB en / à partir d'une chaîne NSString pouvant être enregistrée dans les préférences.

 // Save a color
NSString *theColorStr = [self.artistColor stringFromColor];
[[NSUserDefaults standardUserDefaults] setObject:theColorStr forKey:@"myColor"];

// Read a color
NSString *theColorStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
if ([theColorStr length] > 0) {
    self.myColor = [UIColor colorWithString:theColorStr];
} else {
    self.myColor = [UIColor colorWithRed:88.0/255.0 green:151.0/255.0 blue:237.0/255.0 alpha:1.0];
}
 

-4voto

zpesk Points 3049

Edit 2: je crois avoir trouvé la réponse. Découvrez l'article de Erica Sadun sur l'extension de UIColor.

Edit: Ce code ne semble pas fonctionner pour un UIColor Objet. Je ne sais pas pourquoi...

Voici un peu de code pour prendre un coup d'oeil à:

La sauvegarde d'un objet dans NSUserDefaults:

 NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults];
[userDefaults setObject:someColorObject forKey:@"myColor"];

La lecture d'un objet à partir de NSUserDefaults:

NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults];
UIColor *someColor = (UIColor *)[userDefaults objectForKey:@"myColor"];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X