Objective c 在NSDictionary中存储UIColor并检索它们?
我需要返回给定索引的特定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基本上存储为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"];
希望这对你有帮助