2011-08-24 17 views
24

है मैं NSString के लिए, एक वस्तु के प्रकार की जांच करने की उम्मीद:जांच करें कि एक वस्तु NSInteger

[theObject isKindOfClass:[NSString class]] 

यह काम करता है, लेकिन NSInteger

के लिए
[theObject isKindOfClass:[NSInteger class]] 

रिपोर्ट करेंगे त्रुटि

में आपका स्वागत है कोई टिप्पणी

उत्तर

51

एनएसएनंबर कक्षा का उपयोग करें:

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 एक उद्देश्य-सी कक्षा नहीं है। यह एक अभिन्न प्रकार के लिए एक टाइपिफ है। इस प्रकार, एक वस्तु कभी भी एनएसआईएनटेगर नहीं बनती है।

आप जो खोज रहे हैं वह NSNumber वर्ग है, जो एक उद्देश्य-सी कक्षा है।

6

एनएसआईएनटेगर ऑब्जेक्ट प्रकार नहीं है। यह एक नींव डेटा प्रकार है। चेकआउट Foundation Data Types Reference यह देखने के लिए कि इसे कैसे परिभाषित किया गया है।

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

संबंधित मुद्दे