开发者

How to store CGColor in Core Data?

I'm wanting to store/save CGColor in Core Data.

Currently, I'm storing colours with floats for red, blue, green, etc.

I'm needing to store the topColor and bottomColor as they are used in a very simple gradient image for an avatar's background.

My current version is very cumbersome and requires me to store the RGB values as floats. It is cumbersome because I have to pass the RGB values manually; rather than say passing the actual CGColor and then breaking up/grabbing the RGB values.

Anyway, my question is how to store cgcolor in core data and would welcome any support, help or guidance on the best way to store cgcolor values in core data.

Thank you.

// My current version follows...
-(void)createColorScheme:(NSManagedObjectContext *)context withName:(NSString *)tColorName 
         withTopColorRed:(float)tColorRed 
        withTopColorBlue:(float)tColorBlue 
       withTopColorGreen:(float)tColorGreen
      withBottomColorRed:(float)bColorRed 
    withBottomColorGreen:(float)bColorGreen 
     withBottomColorBlue:(float)bColorBlue
{
    NSError *error;

    ColorScheme *c = [NSEntityDescription insertNewObjectForEntityForName:@"ColorScheme" inManagedObjectContext:context];
    [c setName:@"Red"];
    [c setTaken:[NSNumber numberWithInt:0]];
    [c setTopColorRed:[NSNumber numberWithFloat:tColorRed]];
    [c setTopColorBlue:[NSNumber numberWithFloat:tColorBlue]];
    [c setTopColorGreen:[NSNumber numberWithFloat:tColorGreen]];
    [c setBottomColorRed:[NSNumber numberWithFloat:bColorRed]];
    [c setBottomColorGreen:[NSNumber numberWithFloat:bColorGreen]];
    [c setBottomColorBlue:[NSNumber numberWithFloat:bColorBlue]];

    if (! [context save:&error] )
    {
        NSLog(@"Unresolved Core Data Save error %@, %@", error, [error userInfo]);
        exit(-1);
    开发者_开发技巧}

    c = nil;
}


You might need to use coredata's non standard persistant attributes for saving CGColor. This is apple's documentation for that. This SO link explains it a bit..


I decided to just store floats and retrieve them as and when required. I know its not the best way, but it seems to work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜