Objective c 在NSDictionary中存储UIColor并检索它们?

Objective c 在NSDictionary中存储UIColor并检索它们?,objective-c,ios,nsarray,uicolor,Objective C,Ios,Nsarray,Uicolor,我需要返回给定索引的特定UIColor。 我试图将UIColor基本上存储为NSArray TypeColor=[[NSDictionary alloc]initWithObjectsAndKeys: @“1”,[NSArray ARRAY WITH OBJECTS:[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber numberWith

我需要返回给定索引的特定UIColor。
我试图将UIColor基本上存储为NSArray

TypeColor=[[NSDictionary alloc]initWithObjectsAndKeys:

@“1”,[NSArray ARRAY WITH OBJECTS:[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber NUMBER WITHFLOAT:0.5],[NSNumber numberWithFloat:0.5],[NSNumberWithFloat:1.0],无]

@“5”,[NSArray ARRAY WITH OBJECTS:[NSNumber NUMBER WITHFLOAT:1.0],[NSNumber] numberWithFloat:0.5],[NSNumber WithFloat:0.1],[NSNumber 浮点数:1.0],无] ,无]//nil表示对象和键的结束

在这里,我想从字典中检索UIColor:

a = 5;
NSArray* colorArray = [TypeColors objectForKey:a];
UIColor* color = [UIColor colorWithRed:[colorArray objectAtIndex:0]
green:[colorArray objectAtIndex:1] blue:[colorArray objectAtIndex:2] 
alpha:[colorArray objectAtIndex:3]];
它总是给我一个零,有人知道为什么吗? 谢谢

将其更改为

UIColor* color = [UIColor colorWithRed:[[colorArray objectAtIndex:0] floatValue]
green:[[colorArray objectAtIndex:1] floatValue] blue:[[colorArray objectAtIndex:2] floatValue] 
alpha:[[colorArray objectAtIndex:3] floatValue]];
要发送到那里的参数是cgfloat,而不是NSNumber两件事:

1)
initWithObjects和keys
中的事物顺序是对象,然后是它们的键。是的,这是直觉上的倒退


2) 键不是整数
5
,而是
NSString
@“5”

您需要先将UIcolor转换为NSString,然后将其保存在字典中,如下所示:

    -(NSString *)convertColorToString :(UIColor *)colorname
    {
    if(colorname==[UIColor whiteColor] )
    {
       colorname= [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
    }
    else if(colorname==[UIColor blackColor])
    {
       colorname= [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
    }
    else
    {
        colorname=colorname;
    }
    CGColorRef colorRef = colorname.CGColor;
    NSString *colorString;
    colorString=[CIColor colorWithCGColor:colorRef].stringRepresentation;
    return colorString;
}
当您想从字典中获取值时,需要将字符串转换为颜色,如下所示

    -(UIColor *)convertStringToColor :(NSDictionary *)dicname :(NSString *)keyname
{
    CIColor *coreColor = [CIColor colorWithString:[dicname valueForKey:keyname]];
    UIColor *color = [UIColor colorWithRed:coreColor.red green:coreColor.green blue:coreColor.blue alpha:coreColor.alpha];
    //NSLog(@"color name :%@",color);
    return color;
}
self.view.backgroundColor=[self convertStringToColor:retrievedDictionary:@"MAINVW_BGCOLOR"];
例:

这里dicsavealuiupdate是我的字典,我在其中保存了我的视图背景色

 [dicSaveAllUIupdate setObject:[self convertColorToString: self.view.backgroundColor] forKey:@"MAINVW_BGCOLOR"];
我将按如下方式检索它

    -(UIColor *)convertStringToColor :(NSDictionary *)dicname :(NSString *)keyname
{
    CIColor *coreColor = [CIColor colorWithString:[dicname valueForKey:keyname]];
    UIColor *color = [UIColor colorWithRed:coreColor.red green:coreColor.green blue:coreColor.blue alpha:coreColor.alpha];
    //NSLog(@"color name :%@",color);
    return color;
}
self.view.backgroundColor=[self convertStringToColor:retrievedDictionary:@"MAINVW_BGCOLOR"];
希望这对你有帮助