如何在Core Data中存储CGColor?

时间:2011-04-21 11:07:11

标签: ios cocoa-touch core-data cgcolor

我想在Core Data中存储/保存CGColor。

目前,我正在使用红色,蓝色,绿色等浮动颜色存储颜色

我需要存储topColor和bottomColor,因为它们在非常简单的渐变图像中用于化身的背景。

我当前的版本非常繁琐,需要我将RGB值存储为浮点数。这很麻烦,因为我必须手动传递RGB值;而不是说传递实际的CGColor然后分解/抓取RGB值。

无论如何,我的问题是如何将cgcolor存储在核心数据中,并欢迎任何有关在核心数据中存储cgcolor值的最佳方法的支持,帮助或指导。

谢谢。

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

2 个答案:

答案 0 :(得分:3)

您可能需要使用coredata的非标准持久性属性来保存CGColor。 This是苹果的文档。这个SO链接解释了一下......

答案 1 :(得分:0)

我决定只存储花车并在需要时检索它们。我知道这不是最好的方式,但似乎有效。