2010-04-29 6 views
2

en Objective-c J'ai cette fonction prototype: - (NSString *) formatSQL: (NSString *) sql, ... Je peux passer à cette fonction tout type de paramètres : NSString, NSNumber, entier, float Comment puis-je déterminer dans la fonction si un paramètre est un objet (NSString ..) ou une primitive (integer ...)? grâce BrochPirateobjective-c déterminer si le paramètre est un objet

Répondre

5

Si vous allez avoir un paramètre qui accepte plusieurs types, vous ne pouvez le faire en toute sécurité en utilisant des objets Obj-C, ce qui signifie en utilisant id comme type. Vous ne pouvez pas en toute sécurité de se mélanger avec idfloat, integer etc.

Si vous enveloppé tous les float s et int s dans NSNumber s, vous pourriez avoir une méthode comme ceci:

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

Il y a quelques mises en garde à l'utilisation isKindOfClass:, mais cela devrait servir de bon point de départ.

Questions connexes