2009-08-29 12 views
2

で整数値をdeterming私は、配列の各要素の種類を確認する必要があります...のObj-C 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 
    } 
} 

intのためだけのエイリアスですので、どのように私はこれをチェックすることができます実行時に?

答えて

3

実際にNSIntegerNSArrayに格納することはできません。これはオブジェクトではないためです。あなたは、アレイ内の数値を格納している場合、彼らはNSNumberの最も可能性の高いインスタンスであるので、あなたがのためにチェックします:

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

iPhoneデベロッパのヒントgives a good summary

+0

ああ、それはタイプミスでした。 NSNumberを使用している場合、浮動小数点数を配列のintと区別できますか? –

+0

もう少し面倒です。 'NSNumber'の' objCType'を要求し、 'i'または 'f'をテストできます。参照してくださいhttp://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html#//apple_ref/occ/instm/NSNumber/objCType –

+0

を参照してください!ありがとう:) –

関連する問題