Objective c 目标-c确定参数是否为对象

Objective c 目标-c确定参数是否为对象,objective-c,object,parameters,primitive,Objective C,Object,Parameters,Primitive,在Objective-c中,我有一个功能原型: -(NSString*)formatSQL:(NSString*)sql。。。 我可以向该函数传递任何类型的参数:NSString、NSNumber、integer、float 如何在函数中确定参数是对象(NSString..)还是基元(integer? 谢谢 BrochPirate如果要使用一个接受多种类型的参数,则只能通过使用Obj-C对象来安全地执行,这意味着使用id作为类型。您无法安全地将id与float、integer等相互混合 如果将所

在Objective-c中,我有一个功能原型: -(NSString*)formatSQL:(NSString*)sql。。。 我可以向该函数传递任何类型的参数:NSString、NSNumber、integer、float 如何在函数中确定参数是对象(NSString..)还是基元(integer? 谢谢
BrochPirate

如果要使用一个接受多种类型的参数,则只能通过使用Obj-C对象来安全地执行,这意味着使用
id
作为类型。您无法安全地将
id
float
integer
等相互混合

如果将所有
float
s和
int
s包装在
NSNumber
s中,则可以使用如下方法:

- (NSString *)formatSQL:(id)obj
{
    if ([obj isKindOfClass:[NSString class]]) {
        // Format as a string
    }
    else if ([obj isKindOfClass:[NSNumber class]]) {
        // Further processing will be required to differentiate between ints and floats
    }
}
使用
是类的一种:
有一些注意事项,但这应该是一个很好的起点