2011-08-24 67 views
24

我希望來檢查對象的類型,NSString的:檢查的對象是NSInteger的

[theObject isKindOfClass:[NSString class]] 

它的工作原理,但NSInteger的

[theObject isKindOfClass:[NSInteger class]] 

會報告錯誤

歡迎任何評論

回答

51

使用NSNumber類:

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

的NSNumber繼承:NSObject的

NSInteger的 用來形容一個整數。

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
#endif 
11

NSInteger不是Objective-C類。這是一個整型的typedef。因此,一個對象永遠不會是一個NSInteger。

你在找什麼是NSNumber類,它是一個Objective-C類。

0
//checked 
+ (BOOL)CGFloatIsCanNSInteger:(CGFloat)floatValue inAccuracy:(NSString*)accuracy { 
    NSString *strFloat = [NSString stringWithFormat:accuracy, floatValue]; 
    NSRange dotRange = [strFloat rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"."]]; 
    NSUInteger dotLocation = dotRange.location + 1; 
    NSString *subStrFromDot = [strFloat substringFromIndex:dotLocation]; 
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"]; 
    for (int i = 0; i < [subStrFromDot length]; i++) { 
     unichar c = [subStrFromDot characterAtIndex:i]; 
     if ([myCharSet characterIsMember:c]) { 
      return NO; 
     } 
    } 
    return YES; 
} 
//checked 
+0

您應該使用代碼標籤來正確設置它的格式:) – bkbeachlabs