Quel est le moyen le plus simple d'économiser UIColor
en NSUserDefaults
et de le récupérer ensuite?
Réponses
Trop de publicités?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];
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"]];
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];
}
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"];