É possível usar um curinga no KVC?
Estou tentando usar o curinga no KVC assim.
É possível?
Ou há outras maneiras de usar um curinga para indicar uma variável de membro?
@interface MyClass : NSObject
@property(nonatomic, retain) NSNumber *test1;
@property(nonatomic, retain) NSNumber *test2;
@end
@implementation MyClass{
NSNumber * test1;
NSNumber * test2;
}
@synthesize test1;
@synthesize test2;
@end
usando curinga
MyClass *testClass = [[[MyClass alloc] init] autorelease];
testClass.test1 = @50;
NSLog(@"test value : %@", [testClass valueForKey:@"*1"]);
Para códigos detalhados.
Um motivo real que eu queria é indicar uma variável de membro de instância por valor de número inteiro ou nsnumber. Se possível, é mais fácil definir valores e ler valores de qualquer instância.
Por exemplo, de cópia de parte da propriedade.
MyClass *testClass = [[[MyClass alloc] init] autorelease];
testClass.year_1 = @2012;
testClass.quarter_2 = @3;
testClass.month_3 = @8;
testClass.day_4 = @20;
testClass.week_5 = @4;
// copy propertys to other instance.
// Normal way
MyClass *testClassCopy = [[[MyClass alloc] init] autorelease];
testClassCopy.year_1 = testClass.year_1;
testClassCopy.quarter_2 = testClass.quarter_2;
testClassCopy.month_3 = testClass.month_3;
testClassCopy.day_4 = testClass.day_4;
// copy propertys by using wildcard
for (int j = 0; j < 4; j++) {
NSString *indicate = [NSString stringWithFormat:@"*%@", [NSNumber numberWithInteger:j + 1]];
NSNumber *sourceProperty = [testClass valueForKey:indicate];
[testClassCopy setValue:sourceProperty forKey:indicate];
}