클래스 메서드와 관련하여 질문이 있습니다.클래스 배열과 메서드 ...?
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의 정수 만 저장해야합니다. 이제 색상 및 색상 설명을 대응하는 typedef
의 d PresetColors
을 키로 사용하여 배열에 저장하는 가장 쉬운 방법을 찾고 있습니다. 일부 메소드는 물론 객체 용이어야하지만 일부 메소드는 클래스 메소드 여야합니다. 나는이 방법을 - (UIColor *)getColorWithPresetColor:(PresetColors)presetColor;
실제로 클래스 메서드 등을 의미해야하지만 어떻게하면 매번 초기화하지 않고 할 수 있습니까? 물론 복잡한 switch 문을 만들 수는 있지만, 배열을 사용하는 다른 방법이 있는지 궁금해했습니다. 그래서 객체에 키를 설정하고 다른 곳으로 키를 설정하는 곳은 하나뿐입니다. 나는 그것이 내가 당신이라면