2011-04-21 44 views
0

我想要在Core Data中存储/保存CGColor。如何在核心数据中存储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; 
} 

回答

3

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

+0

感谢您的SO链接,我发现这很有用。 – zardon 2011-04-22 08:53:21

0

我决定只是存储浮动,并在需要时检索它们。我知道它不是最好的方式,但它似乎工作。