2010-04-29 2 views
2

이 함수 원형이 있습니다. - (NSString *) formatSQL : (NSString *) sql, ... 이 함수에는 모든 유형의 매개 변수가 전달 될 수 있습니다. : NSString, NSNumber, integer, float 매개 변수가 객체 (NSString ..) 또는 프리미티브 (정수 ...) 인 경우 함수에서 어떻게 결정할 수 있습니까? 감사 BrochPirateobjective-c 매개 변수가 객체인지 확인합니다. Objective-c의

답변

5

여러 유형을 허용하는 매개 변수를 가질 거라면, 당신은 안전하게 유형으로 id를 사용하여 의미의 Obj-C 객체를 사용하여 그것을 할 만 할 수 있습니다.

- (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 
    } 
} 

이 있습니다 모든 float들과 NSNumber의에서 int들 싸서 경우, 당신이 그렇게 같은 방법을 가질 수 integer

안전하게, floatid을 간 어울려 없습니다 isKindOfClass:을 사용하는 데 몇 가지주의 사항이 있지만 이는 좋은 출발점으로 사용됩니다.