0
我有关于类方法的问题。首先这才是我的代码:使用数组的类方法...?
typedef enum Colors {
PresetColorsWhite=0,
PresetColorsBlue=1,
PresetColorsLightGray=2,
PresetColorsGray=3,
PresetColorsRed=4,
PresetColorsGreen=5,
PresetColorsYellow=6,
PresetColorsOrange=7,
PresetColorsPurple=8,
PresetColorsBrown=9,
} PresetColors;
@interface PresetColor : NSObject
@property UIColor *color;
@property NSString *colorName;
-(void)initWithPresetColor:(PresetColors)presetColor;
-(NSArray *)getAllColorNames;
-(UIColor *)getColorWithPresetColor:(PresetColors)presetColor;
和实现:
@interface PresetColor()
@property (nonatomic, strong) NSMutableArray *colorArray;
@property (nonatomic, strong) NSMutableArray *colorNamesArray;
@end
@implementation PresetColor
@synthesize color = _color;
@synthesize colorName = _colorName;
-(id)init{
[self initWithPresetColor:PresetColorsWhite];
return self;
}
-(void)initWithPresetColor:(PresetColors)presetColor{
[self setupDictionaries];
self.color = [self.colorArray objectAtIndex:presetColor];
self.colorName = [self.colorNamesArray objectAtIndex:presetColor];
}
- (void)setupDictionaries {
self.colorArray = [[NSMutableArray alloc]init];
[self.colorArray insertObject:[UIColor whiteColor] atIndex:PresetColorsWhite];
[self.colorArray insertObject:[UIColor blueColor] atIndex:PresetColorsBlue];
[self.colorArray insertObject:[UIColor lightGrayColor] atIndex:PresetColorsLightGray];
[self.colorArray insertObject:[UIColor grayColor] atIndex:PresetColorsGray];
[self.colorArray insertObject:[UIColor redColor] atIndex:PresetColorsRed];
[self.colorArray insertObject:[UIColor greenColor] atIndex:PresetColorsGreen];
[self.colorArray insertObject:[UIColor yellowColor] atIndex:PresetColorsYellow];
[self.colorArray insertObject:[UIColor orangeColor] atIndex:PresetColorsOrange];
[self.colorArray insertObject:[UIColor purpleColor] atIndex:PresetColorsPurple];
[self.colorArray insertObject:[UIColor brownColor] atIndex:PresetColorsBrown];
self.colorNamesArray = [[NSMutableArray alloc]init];
[self.colorNamesArray insertObject:NSLocalizedString(@"White", nil) atIndex:PresetColorsWhite];
[self.colorNamesArray insertObject:NSLocalizedString(@"Blue", nil) atIndex:PresetColorsBlue];
[self.colorNamesArray insertObject:NSLocalizedString(@"LightGray", nil) atIndex:PresetColorsLightGray];
[self.colorNamesArray insertObject:NSLocalizedString(@"Gray", nil) atIndex:PresetColorsGray];
[self.colorNamesArray insertObject:NSLocalizedString(@"Red", nil) atIndex:PresetColorsRed];
[self.colorNamesArray insertObject:NSLocalizedString(@"Green", nil) atIndex:PresetColorsGreen];
[self.colorNamesArray insertObject:NSLocalizedString(@"Yellow", nil) atIndex:PresetColorsYellow];
[self.colorNamesArray insertObject:NSLocalizedString(@"Orange", nil) atIndex:PresetColorsOrange];
[self.colorNamesArray insertObject:NSLocalizedString(@"Purple", nil) atIndex:PresetColorsPurple];
[self.colorNamesArray insertObject:NSLocalizedString(@"Brown", nil) atIndex:PresetColorsBrown];
}
- (NSArray *)getAllColorNames {
return [self.colorNamesArray copy];
}
- (UIColor *)getColorWithPresetColor:(PresetColors)presetColor{
return [self.colorArray objectAtIndex:presetColor];
}
我想在我的应用程序是可能性用户从一些预定义的颜色选择。在数据库中只能保存typedef的整数。 现在我正在寻找最简单的方法来将颜色和ColorDescriptions保存在数组中,并将对应的typedef
'd PresetColors
作为关键字。一些方法当然应该是针对对象的,但有些方法应该是类方法。 我的意思是方法 - (UIColor *)getColorWithPresetColor:(PresetColors)presetColor;
实际上应该是一个类方法等,但我怎么能做到这一点,而不是每次初始化数组?当然,我可以制作一个复杂的开关语句,但是我想知道数组是否有另一种方式,所以我只有一个地方可以将对象的键设置到其他地方?我希望这是清楚明白我的意思:)