2009-08-29 9 views
2

Je dois vérifier le type de chaque élément dans un tableau ...valeurs entières DETERMINATION Obj-C avec isKindOfClass

for(id obj in items) { 
    if([obj isKindOfClass:[NSString class]]) { 
     //handle string case 
    } else if([obj isKindOfClass:[NSInteger class]]) { //THIS LINE GIVES ERROR 
     //handle int case 
    } 
} 

Bien sûr NSInteger est juste un alias pour int, alors comment puis-je vérifier cela lors de l'exécution?

Répondre

3

Vous ne pouvez pas réellement stocker NSInteger dans un NSArray, puisqu'il ne s'agit pas d'un objet. Si vous enregistrez des numéros dans votre tableau, ils sont la plupart des cas probables de NSNumber, de sorte que vous vérifieraient pour:

if ([obj isKindOfClass:[NSNumber class]]) { ... } 

iPhone Conseils de développement gives a good summary de la différence entre NSInteger et NSNumber.

+0

ah, ouais c'était une faute de frappe. Comment différencieriez-vous les flottants des entiers dans le tableau si vous utilisez NSNumber? –

+0

Ça devient un peu plus compliqué. Vous pouvez demander le 'objCType' de' NSNumber', puis tester pour 'i' ou 'f'. Voir http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html#//apple_ref/occ/instm/NSNumber/objCType –

+0

qui fera l'affaire! merci :) –

Questions connexes