Objective c 目标-c确定参数是否为对象
在Objective-c中,我有一个功能原型: -(NSString*)formatSQL:(NSString*)sql。。。 我可以向该函数传递任何类型的参数:NSString、NSNumber、integer、float 如何在函数中确定参数是对象(NSString..)还是基元(integer? 谢谢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等相互混合 如果将所
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
}
}
使用是类的一种:
有一些注意事项,但这应该是一个很好的起点