在 Objective-c 中我有这个函数原型:-(NSString*)formatSQL:(NSString*) sql, ...我可以向这个函数传递任何类型的参数:NSString、NSNumber、整数、浮点我如何确定如果参数是对象(NSString..)或原始(整数...),则函数?感谢 BrochPirate
问问题
597 次
1 回答
5
如果您将有一个接受多种类型的参数,您只能通过使用 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
}
}
使用 有一些注意事项isKindOfClass:
,但这应该是一个很好的起点。
于 2010-04-29T06:48:01.000 回答