So, I was playing with something where the type of the arg class is unknown until runtime. eg:
- (NSNumber *)doWhatever:(id)arg
{
if ([arg isKindOfClass:[NSNumber class]]) {
return arg;
}
else {
NSLog("arg klass=%@", [arg class]);
}
if ([arg isKindOfClass:[NSArray class]]) {
for (id x in arg) {
NSNumber *result = [self doWhatever:x];
if (result) {
return result;
}
}
}
return nil;
}
- (void)someMethod
{
NSArray *myArray = [NSArray arrayFromObjects:[NSNumber numberWithInt:3], nil]];
NSNumber *myNum = [self doWhatever:myArray];
NSLog(@"myNum=%@", myNum);
}
This is obviously a far-fetched example of what I'm trying to do. The fact is that this never works. The b / c class "arg" is always displayed as NSCFNumber, and I cannot find a way to verify this.
Any way to make it less confusing to determine if an arbitrary value in an array is an integer or not?
Thanks Jamie
UPDATE:
, . @chuck, @omz @ . , , , . , (. ), .
, , , - "doWhatever" , .
, , ...
, !
, :
- (NSNumber *)doWhatever:(id)arg
{
if ([arg isKindOfClass:[NSNumber class]]) {
return arg;
}
else {
NSLog(@"arg klass=%@", [arg class]);
}
if ([arg isKindOfClass:[NSArray class]]) {
for (id x in arg) {
NSNumber *result = [self doWhatever:x];
if (result) {
return result;
}
}
}
return nil;
}
- (void)someMethod
{
NSArray *myArray = [NSArray arrayWithObjects:
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],
[NSNumber numberWithInt:4],
nil];
NSNumber *myNum = [self doWhatever:myArray];
NSLog(@"myNum=%@", myNum);
}