Как хранить CGColor в Core Data? - PullRequest
       41

Как хранить CGColor в Core Data?

0 голосов
/ 21 апреля 2011

Я хочу сохранить / сохранить CGColor в Core Data.

В настоящее время я храню цвета с плавающей точкой для красного, синего, зеленого и т. Д.

Мне нужно хранить 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 ]

3 голосов
/ 21 апреля 2011

Для сохранения CGColor может потребоваться использование нестандартных постоянных атрибутов coredata. Это - документация Apple для этого.Эта ссылка SO объясняет это немного ..

0 голосов
/ 22 апреля 2011

Я решил просто хранить поплавки и извлекать их по мере необходимости.Я знаю, что это не лучший способ, но, похоже, он работает.

...