34 votos

UIColor a de ahorro y carga de NSUserDefaults

¿Cuál es la forma más fácil de ahorrar un UIColor en NSUserDefaults y luego volver a?

107voto

Wevah Puntos 17636

Una forma de hacerlo sería archivarlo (como con NSColor, aunque no he probado esto):

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

Y para recuperarla:

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

8voto

Unreality Puntos 1486

Tengo la respuesta por mí mismo

Guardar

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"];

Carga

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 Puntos 717

Gracias por categoría de UIColor de Erica. No me gusta guardar 4 flotadores en las preferencias y sólo quería una sola entrada.

Así que usando de Erica UIColor categoría, era capaz de convertir el color RGB de un NSString que puede guardarse en las preferencias.

// 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];
}

-1voto

zpesk Puntos 3049

Edit 2: me parece que he encontrado la respuesta. Echa un vistazo a este artículo por Erica Sadun en la ampliación de UIColor.

Edit: Este código no parece funcionar para una UIColor Objeto. No sé por qué...

Aquí está el código para echar un vistazo a:

Guardar un objeto en NSUserDefaults:

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

La lectura de un objeto a partir de NSUserDefaults:

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X