2009-08-29 41 views
2

的OBJ-C determing整數值我需要檢查每個元素的類型在一個數組...與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 
    } 
} 

當然NSInteger的是隻爲int的別名,所以我怎樣可以檢查此在運行時?

回答

3

實際上,您不能將NSInteger存儲在NSArray中,因爲它不是一個對象。如果你是你的陣列中存儲號碼,他們是NSNumber最有可能的情況下,所以你會檢查:

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

iPhone開發技巧NSIntegerNSNumber之間的差異gives a good summary

+0

啊,是的,這是一個錯字。 如果使用NSNumber,你會如何區分數組中的整數? – 2009-08-29 21:59:07

+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 – 2009-08-29 22:03:11

+0

這樣做!謝謝:) – 2009-08-29 22:05:32